2017-12-13 14 views
1

컴파일하고 로컬 컴퓨터에서 예상대로 작동하는 ASP.NET 웹 API 2 프로젝트가 있지만 IIS 8.5 서버에 게시하면 모든 요청이 상태 코드 500 서버 오류와 함께 다시 나타납니다. 추가 정보는 제공되지 않습니다. 이것은 웹 API를 처음 게시하려고 시도한 것입니다.Visual Studio 2017을 사용하여 ASP.NET Web API 2 프로젝트를 IIS 8.5에 게시하려면 어떻게합니까?

나는 IIS에서 사이트를 만들었고 다른 사이트와 마찬가지로 구성했으며 HTTPS로만 설정했습니다. 내가 쉽게 연결할 수있는 기본 default.html 페이지가 있기 때문에 사이트가 올바르게 구성되어 있다고 생각하지만 API 호출을 할 수없는 것 같습니다. Postman을 사용하여 API 호출을 테스트하고 있습니다.

은 Visual Studio에서, 나는 옵션을 게시 웹 배포, 웹 배포 패키지파일 시스템을 사용했습니다. 후자의 두 가지에 대해 "Publishing during Precompile"옵션을 사용하면 차이가 나타나지 않습니다.

웹 배포은 원격 컴퓨터에 연결할 수없고 웹 배포가 설치되어 있는지 확인할 수 없다는 연결 유효성 검사를 거부합니다. "프로그램 및 기능"을 통해 확인할 수 있으며, URI의 모든 조합을 사용하여 아무 쓸모없이 연결할 수 있다고 생각할 수 있습니다. 이 오류는 나를 Microsoft troubleshooting page으로 안내하지만 제안 된 명령이 작동하지 않는 것 같습니다.

웹 배포 패키지을 사용하면 로컬 서버의 파일 시스템에 .zip을 만든 다음 호스팅 서버로 전송하고 IIS에서 웹 배포를 사용하여 가져올 수 있습니다. 아래의 스크린 샷은 가져온 후에 IIS 웹 사이트의 루트 디렉토리에있는 것입니다. 내 응용 프로그램의 일부가 아니므로 수동으로 테스트 용 HTML 파일을 추가합니다. bin 폴더에는 필요한 모든 DLL 파일이 포함되어 있습니다.

Web API IIS website file structure

파일 시스템은 행동의 차이없이, 웹 배포 패키지와 동일한 구조를 출력 게시합니다.

누락 된 것이 있습니까? 나는 그 밖의 해결해야 할 것이 무엇인지 알지 못한다.

+1

응용 프로그램의 런타임에 문제가 발생했습니다. 문제를 해결하는 가장 쉬운 방법은 500 응답 메시지를 검사하는 것입니다. 애플리케이션에 대해 적절한 errorDetailsPolicy가 선택되면 메시지에 발생한 예외에 대한 설명이 포함됩니다. 다음은 웹 API에서 자세한 오류를 사용하는 방법의 예입니다. https://lostechies.com/jimmybogard/2012/04/18/custom-errors-and-error-detail-policy-in-asp-net-web-api/ –

+0

웹 API가 web.config customErrors 규칙을 준수하지 않는다는 사실을 알지 못했습니다. 그것으로 나는 그 문제를 풀 수 있었다. 고맙습니다! – JacobD

답변

0

@n.piskunov's comment을 반복하려면 내 앱에 오류 세부 정보 정책이 없었습니다. 이 기사의 Jimmy Bogard은 웹 API가 파일의 customErrors 설정을 사용하지 않는다고 설명합니다.이 설정은 내가 사용하고있는 설정입니다. 또한이 문제를 해결하는 방법을 설명합니다.

자세한 오류 메시지가 활성화되어있어 대상 프레임 워크가 서버에 설치되지 않았 음을 알 수있었습니다. 올바른 대상 프레임 워크를 설치하면 문제가 해결되었습니다.

+1

예, 웹 API 응용 프로그램의 customErrors와 관련하여 정말 혼란스러운 문제입니다. 가장 이상한 점은 MS 문서에 따라 IncludeErrorDetailPolicy가 기본적으로 customErrors 모드 값을 가리키고 있다는 것입니다. 그러나 사실 Owin.Webhost (이 경우 LocalOnly 정책을 가리키고 있음)를 사용할 때가 아닙니다.따라서 웹 API 응용 프로그램에서보고하는 오류 세부 정보를 관리하지 않으려면 수동으로 IncludeErrorDetailPolicy를 설정해야합니다. –