IIS 7.5에서 호스팅되는 Web Api에서 HTTP 404 페이지를 찾을 수 없음


96

Web Api 애플리케이션이 있습니다. VS 2010 디버깅 개발 서버를 사용하여 테스트했을 때 완벽하게 작동합니다. 하지만 이제 IIS 7.5에 배포했으며 응용 프로그램에 액세스하려고 할 때 HTTP 404 오류가 발생합니다.

내 web.config는 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-FlowGearProxy-20123141219;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="true" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
</configuration>

2
나는 같은 문제가 있습니다. 아직 해결책을 찾지 못했지만 발견 한 한 가지는 IIS에서 사이트를 선택한 다음 처리기 매핑 기능으로 이동하면 *를 반드시 존재해야하는 파일에 매핑하는 정적 파일에 대한 매핑이 있다는 것입니다. 이 매핑을 제거하고 모든 HTTP 동사에 대한 새 매핑을 추가하면 더 이상 404가 표시되지 않고 빈 흰색 페이지로 바뀝니다.
Despertar

>> VS 2010 디버깅 개발 서버 사용. -일명 사악한 카시니. blogs.msdn.com/b/rickandy/archive/2011/04/22/…를 참조하십시오 .-그래도 작동하지 않으면 새로운 MVC 4 WebApi 앱을 만들고 배포를 테스트합니다. – 단순
RickAndMSFT

답변:


93

나는 이것으로도 어려움을 겪고 있었다. 다행스럽게도 Steve Michelotti는 여기 에서 저에게 적합한 솔루션을 문서화했습니다 .

하루가 끝나면 웹 구성에서 ExtensionlessUrlHandler-Integrated-4.0 핸들러에 대한 모든 동사 (verb = "*")를 활성화했습니다.

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
        <handlers>
            <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
            <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
        </handlers>
</system.webServer>

다른 사람들은 WebDAV를 활성화하면 문제가 발생한다고 지적했습니다. 다행히도 그 문제도 발생하지 않았습니다.


3
그 하나에 +1. 하지만 IIS 관리자를 사용하여 응용 프로그램의 처리기 매핑에서 변경했습니다. 여러 동사에 대해 설정되었습니다. 나는 그것을 모든 동사 (*)와 짜잔으로 변경했습니다. 그러나 항상 소스를 넣는 것이 좋습니다.
Wolf5

1
나도 같은 문제가 있지만 이러한 변경 사항이 도움이되지 않았습니다. 다른 구성도 있습니까? 아니면 도서관 참조 일 수 있습니까? 또한, 참조하십시오 stackoverflow.com/questions/27303523/...
바박

2
많은 사람들이 runAllManagedModulesForAllRequests를 사용하면 성능에 영향을 미친다고 말합니다 (아래 hemant gautam의 답변 확인). 그러나 동일한 서비스가 작동하지 않으므로 여기에 구성을 따릅니다. blog.maartenballiauw.be/post/2012/12/07/… 이 링크는 또한 WebDAV를 활성화하면 결과에 영향을 미칠 수 있음을 지적합니다
Hoàng Long

멋진 대답입니다!
EnocNRoll-AnandaGopal Pardue

1
나를 위해 동사는 이미 *. 나는 경로를 변경했다 *가 같은 일을 할뿐만 아니라 *.여전히 문제 발생
Alsty

56

같은 문제가있었습니다. 이 구성 설정으로 문제가 해결되었습니다.

<system.webServer>
    .....
    <modules runAllManagedModulesForAllRequests="true" />
    .....
</system.webServer>

http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html에 설명 된대로 위의 솔루션은 피해야합니다. 대신 이것을 사용하십시오. Lopsided에서도 동일한 솔루션을 제공합니다. 사용자가 첫 번째 작업 솔루션을 구현하지 않도록하려면 여기에 보관하십시오.

<modules>
  <remove name="UrlRoutingModule-4.0" />
  <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  <!-- any other modules you want to run in MVC e.g. FormsAuthentication, Roles etc. -->
</modules>

잘 작동하지만 그다지 좋은 해결책은 아닙니다. UrlRoutingModule을 사용하는 것이 좋습니다 (아래 Lopsided의 답변 참조). britishdeveloper.co.uk/2010/06/…
Der_Meister

37

IIS가 ASP.NET 이후에 설치되거나 활성화 된 경우 .NET 응용 프로그램이 작동하려면 수동으로 ASP.NET을 IIS에 등록해야합니다.

Windows 7 이하의 경우 :

  1. 관리자 권한으로 명령 프롬프트 (cmd.exe)를 실행합니다.
  2. 적절한 .NET Framework 위치로 이동합니다. (예 : C : \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319)
  3. aspnet_regiis.exe -i 실행

Windows 8 이상 :

  1. 시작 메뉴에서 "Windows 기능 켜기 또는 끄기"를 입력하고 첫 번째 결과를 선택합니다.
  2. 인터넷 정보 서비스 : World Wide Web 서비스 : 응용 프로그램 개발 기능을 확장하고 ASP.NET 4.5 (또는 .NET Framework 2.0-3.5에서 프로젝트를 지원해야하는 경우 ASP.NET 3.5)를 선택합니다.
  3. 확인을 클릭하십시오.

2
개발을 위해 IIS Express에서 전체 IIS로 마이그레이션했으며 이것이 저에게 해결되었습니다. 감사!
Jim Brown

1
위의 @JimBrown과 유사합니다. IIS Express에서 마이그레이션 한 후 저에게 효과적이었습니다.
SolidRegardless

이것은 나를 위해 그것을 해결했습니다. Windows 7에서 Visual Studio 2015 Ent, 새로운 MVC 5 웹 사이트가 IIS Express에서 전체 IIS로 변경되었습니다.
Geoff Gunter

26

가상 디렉터리 또는 응용 프로그램에서 Web API 앱을 실행하고 있습니까?

예 : 프로젝트를 기본 웹 사이트> SampleWebAPI에서 로컬 IIS로 이동할 때 동일한 문제가 발생했습니다. URL다음과 같이 라우팅 이 변경 되었기 때문이라고 생각 합니다.

원본 : localhost:3092/api/values
이동 : localhost/SampleWebAPI/api/values

Web API 프로젝트를 다른 포트에서 실행되는 자체 웹 사이트로 이동하면 작동하는 것 같습니다.

추가 참고 사항 : api내 웹 사이트 내에서 응용 프로그램의 별칭 으로 추가하여 문제를 더욱 복잡하게 만들었습니다 URL.

localhost:81/api/api/values -웹 사이트를 자신의 웹 사이트로 이동 한 후이를 발견했습니다.

내 웹 사이트 및 웹 API를 MVC 프로젝트 사이트 사이의 분리를 유지하고 싶었 기 때문에 따라서 나는의 라우팅 규칙을 변경 global.asax에서 웹 API "DefaultAPI"에 대한 api/{controller}/{id}{controller}/{id}와 ASP.NET MVC 하나 Default에서 {controller}/{id}까지 info/{controller}/{id}.


3
히히히 ... 나는 내 응용 프로그램을 명명했다 IIS으로 api도. 이로 인해이 모든 시행 착오가 2 시간 이상 디버깅되었습니다. 경험을 공유해 주셔서 대단히 감사합니다! 이름을 바꾸고 이제 다시 사업을 시작합니다. : D
Leniel Maccaferri

감사합니다-이것은 내 문제였습니다! :)
Jen

나는 확실히 왜 API 호출 트릭 :)했던 것처럼 기본 웹 사이트에서 가상 디렉터리로 이동, 내가 포트 8080에서 내 프로젝트를 개최했을 때 실패했다 아니에요
키란

14

이것은 나를 위해 일한 유일한 대답입니다 ...

비슷한 문제가있었습니다 ... 내가 뭘하든 아무것도 리디렉션되지 않고 내 전역 파일이 무시되는 것 같았습니다. 이 답변을 찾기 전에 모든 것을 끝내는 것을 진지하게 고려했습니다. 이 링크가 다른 사람에게 도움이되기를 바랍니다.


web.config 파일에 다음을 추가하면 저에게 효과적이었습니다.

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>

물론 system.webServer 태그는 이미 거기에 있었지만 모듈 태그를 추가 한 다음 모듈 태그에 태그 제거추가를 추가했습니다 .


2008 년 (R2 아님) 서버에서이 문제를 해결했는데 이것이 저에게 도움이 된 유일한 솔루션이었습니다. 또한이 기능을 앱 풀을 "통합"모드로 설정하는 것과 결합해야했습니다.
Zoomzoom

11

확인해야 할 몇 가지 사항 :

  1. .NET Framework 4가 설치되어 있는지 확인하십시오.
  2. 웹 사이트 및 가상 디렉터리 (해당하는 경우)에 .NET Framework 버전 4가 선택되어 있는지 확인합니다.
  3. MVC가 설치되어 있는지 또는 bin 디렉토리에 적절한 DLL이 있는지 확인하십시오.
  4. ASP.NET 4.0 웹 서비스 확장을 허용해야 할 수 있음
  5. 애플리케이션을 자체 앱 풀에 넣습니다.
  6. 디렉토리에 최소한 "스크립트 전용"실행 권한이 있는지 확인하십시오.

동일한 IIS 서버에서 실행되는 다른 일반 웹 응용 프로그램이 4 개 있고 모두 .net 프레임 워크 4를 사용하고 있습니다.이 4 가지 항목 중 필요하지 않은 것은 무엇입니까? 내 mvc 응용 프로그램을 게시 할 때 배포 가능한 종속성을 추가하고 ASP.NET MVC를 추가하여 내 bin 디렉터리에 있습니다
Armand

@Armand 당신이 # 1을 한 것처럼 들립니다. # 2는 여전히 필요합니다. 여기에 설명 된대로 배포 가능한 종속성 추가 : haacked.com/archive/2011/05/25/bin-deploying-asp-net-mvc-3.aspx 는 위의 3 번을 처리해야합니다. # 4가 필요하거나 필요하지 않을 때 알려주는 지식이 없지만 필요하거나 필요하지 않을 수 있습니다.
Joe Schrag 2012 년

9

비슷한 문제가있었습니다. web.config 파일에 올바른 설정이 있지만 통합 모드가 아닌 클래식 모드 에서 응용 프로그램 풀을 실행했습니다.

스크린 샷


7

이 문제는 다음과 같은 이유로도 발생할 수 있습니다.

1. Web.Config에서

<system.webServer>
     <modules runAllManagedModulesForAllRequests="true" /> 
<system.webServer>

2. Web API가 배포 된 서버의 bin 폴더에서 다음을 사용할 수 있는지 확인합니다.

  • System.Net.Http

  • System.Net.Http.Formatting

  • System.Web.Http.WebHost

  • System.Web.Http

Web API 패키지는 개발 컴퓨터에서 Nuget을 통해 설치되므로 Visual Studio를 통해 게시하는 경우 이러한 어셈블리는 기본적으로 bin 폴더에 복사되지 않습니다. 그래도 Visual Studio 게시의 일부로 이러한 파일을 사용할 수 있도록하려면 이러한 어셈블리에 대해 CopyLocal을 True로 설정해야합니다.

Sadish Kumar.V


서버에 MVC가 설치되어 있지 않은 경우 해당 DLL이 필요합니다. 제 경우에는 API를 호출하려고 할 때 빈 페이지가 표시되었습니다. DLL을 수동으로 추가하면 나를 위해 일했습니다. 감사!!
Vipul bhojwani

System.Net.Http를 기본 게시 폴더에 추가 한 후 내 문제가 해결되었습니다. 내 문제는 Asp.net Core 솔루션이었습니다
mohas

6

SO 답변을 기반으로 내 에서 추가 된 것으로 변경 path="*."해야 path="*"했습니다.ExtensionlessUrlHandler-Integrated-4.0configuration>system.WebServer>handlersweb.config

전에:

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

후:

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

그렉 감사합니다.이 어리석은 경로 = "*"때문에 저를 죽이려 했어요. " 하지만 이제이 비참한 점을 삭제하면 모든 것이 완벽하게 작동합니다! 대단히 감사합니다!
Junior Silva

5

나는 또한이 문제에 부딪쳤다. 응용 프로그램 풀> 응용 프로그램 풀 이름으로 이동하여 문제를 해결하고 .NET Framework를 버전 v.2.0.50727에서 v4.0.30319로 변경했습니다.


1
나도 이것을 발견했다. 놓치기 쉽기 때문에 답변을 찬성합니다. 내 앱에 대한 사이트를 만들 때 IIS는 자동으로 나를 위해 앱 풀을 만들어 .NET v2.0으로 설정합니다 !! 왜 왜 왜?? :)
Mike Taverne

3

파일 게시 옵션 "게시 중 미리 컴파일"을 비활성화해야했습니다.


그리고 당신은 그것을 어디에서합니까?
vapcguy

1
프로젝트를 마우스 오른쪽 버튼으로 클릭하고 게시를 선택하면 나타나는 대화 상자에 있습니다. 그것은 모양
Pakman

3

Microsoft의 공식 수정 사항이 있습니다. http://support.microsoft.com/kb/980368

<modules runAllManagedModulesForAllRequests = "true">를 사용하지 않는 것이 좋습니다. 이로 인해 모든 요청 (.jpg, .css, .pdf 등)이 등록 된 모든 HTTP 모듈에서 처리됩니다. 두 가지 부정적인 순간이 있습니다. a) 하드웨어 리소스에 대한 추가 부하; b) http 모듈이 새로운 유형의 콘텐츠를 처리하므로 잠재적 오류.


1
정말 감사합니다 ! 나는 다른 모든 것을 절대적으로 시도했고 이것이 그것을 고친 유일한 것입니다.
오란 데니슨

여기도 마찬가지입니다.이 답변을 추가해 주셔서 감사합니다! 내 문제에 대한 해결책이었습니다!
Octavio Garbarino 2017

2

내 프로젝트에 "WebRole.cs"파일을 추가하라는 Windows Azure 자습서를 따른 후 Web API에서 404 응답을 받기 시작했습니다.

내 프로젝트에서 "WebRole.cs"를 제거한 후 Web API 호출이 다시 작동하기 시작했습니다.


이것은 나를 위해 일했습니다. Azure 애플리케이션을 VM 배포로 다시 마이그레이션하고 WebRole.cs의 콘텐츠를 주석 처리 한 후 WebAPI 호출이 다시 작동하기 시작했습니다.
스콧

나는 이것에 하루를 보냈 음에 틀림 없다! 댓글 WebRole.cs는 일 - 경이 왜 그러나
Igorek

2

응용 프로그램 풀이 통합 모드 인지 확인하고
web.config 파일에 다음을 추가하십시오.

<system.webServer>
    .....
    <modules runAllManagedModulesForAllRequests="true" />
    .....
</system.webServer>

2

제 경우 문제는 단순히 다음 사이트에 액세스하려고한다는 것입니다.

myserver.myintranet.com/mysite

그러나 IIS의 http에 대한 웹 사이트 바인딩에는 바인딩에 지정된 호스트 이름이 없습니다. 그것은 전에 효과가 있었고 어떻게 날아 갔는지 전혀 모릅니다.

내가 넣어되면 myserver.myintranet.com호스트 이름으로 (404)는 사라졌다.

IIS 관리자 에서 작업 창에서 바인딩 ... 으로 이동 한 다음 http 바인딩을 편집하여 호스트 이름을 지정합니다.


나도 같은 문제에 직면하고 있습니다. 그리고 당신이 제안한대로 http 바인딩에서 호스트 이름을 확인했는데 제대로 업데이트되었습니다. 그러나 여전히 내 문제는 지속됩니다. 참고 : API 애플리케이션을 하위 애플리케이션으로 호스팅했습니다. 누구든지 이것에 대해 생각한다면 제안하십시오. 예 : "sample.example.com"은 내 기본 애플리케이션이며이 도메인 아래에 "sample.example.com/myAPI/"로 API를 생성했습니다.
Krishna Mani


1

동일한 문제가 있었지만 IIS에서 제공 될 때 웹 API 컨트롤러에 대한 404 응답이 있었지만 모든 것이 VS2010에서 제대로 작동했습니다. 위의 솔루션 중 어느 것도 나를 위해 일하지 않았습니다. 결국 문제는 응용 프로그램에 대한 WSE 3.0 지원을 추가하고 응용 프로그램의 / bin 디렉터리에 Microsoft.Web.Services3 dll이 없다는 것입니다. 이상하지만 dll을 복사 한 후 경로 매핑이 작동하기 시작했습니다.


1

나에게 문제는 루트 사이트가 .NET 2.0 앱 풀을 사용하도록 구성되었고 해당 사이트 내의 내 응용 프로그램이 .NET 4.5였습니다.

.NET 4 앱 풀로 새 사이트를 만들고 그 루트에 내 응용 프로그램을 배치했는데 제대로 작동했습니다.


1

나는 이것으로도 어려움을 겪었습니다. 내 정확한 문제는 내가 웹 메소드에 매개 변수를 입력하고 테스트했을 때 404를 제공하는 ASMX 웹 서비스가 있다는 것입니다. 특정 메소드는 과거에는 잘 작동했으며 변경되지 않았습니다. 다시 게시되었습니다. 그런 다음 여기에 도착하여 게시 된 모든 답변을 시도했지만 도움이되지 않았습니다.

내 궁극적 인 솔루션? 이것이 과감하다는 것을 알고 있지만 방금 새로운 Visual Studio 솔루션과 웹 프로젝트를 만들었습니다. MVC를 선택한 다음 "추가"> "새 항목"을 수행하고 그 아래에서 "Visual C #"> "웹"및 "웹 서비스 (ASMX)"를 선택했습니다. 이전 코드 숨김 코드를 모두 복사 한 다음 새 프로젝트에서 새 파일을 제공 한 네임 스페이스를 기록한 다음 새 프로젝트의 새 코드 숨김 파일에 이전 코드를 모두 붙여넣고 네임 스페이스를 넣습니다. 과거로 돌아갑니다.

그런 다음 Visual Studio를 사용하여 "추가"> "새 폴더"를 수행하기 전에 내 프로젝트에 내 폴더를 만든 다음 Windows 탐색기를 사용하여 내 파일을 다른 프로젝트의 폴더로 다시 복사 한 다음 각 폴더를 마우스 오른쪽 버튼으로 클릭합니다. Visual Studio에서 "추가"> "기존 항목 ..."을 수행하고 해당 폴더의 항목을 새 프로젝트의 Visual Studio 폴더로 가져 왔습니다. 모든 .NET 어셈블리를 다시 참조하여 두 프로젝트를 모두 열어서 이전에 참조했던 것 (여러 개가 있음)을 비교할 수있었습니다. 새 프로젝트의 이름을 약간 다르게 지정해야했습니다. 기본적으로 예를 들어 "MyWebApp"대신 "GeneralWebApp"과 비슷한 작업을 수행 했으므로 전체 솔루션에서 "모두 바꾸기"를 수행하여 해당 이름을 바꾸어야했습니다.

그런 다음 프로젝트에서 "모두 다시 빌드"를 수행 한 다음 올바르게 빌드 할 때 Visual Studio에서 제공하는 "재생"단추로 시작했습니다. 잘 작동했습니다. 그래서 나는 그것을 게시했고 내가 그것을 게시 한 서버에서 실행했을 때 모든 것이 정상이었습니다. 나는 무슨 일이 일어 났는지에 대한 설명이 없지만 그것이 내가 그것을 극복 한 방법입니다. Visual Studio가 수행하는 작업이 문제를 일으키는 지 확인하는 것은 나쁜 테스트가 아닙니다.


1

프로젝트를 빌드 한 후 IIS에 bin 폴더 만 배치하면 이 문제도 발생합니다. 이 상황에서는 VisualStudio를 사용하여 프로젝트를 게시 한 다음 게시 된 폴더를 IIS에 배치해야합니다.


0

어떤 종류의 HTTP 요청을하고 있습니까?

이것은 약간 왼쪽 필드 대답이지만 API가 실제로 반환하는 내용을 확인하기 위해 404에 대한 IIS 기본 오류 페이지를 제거해 보셨습니까?

잘못된 ID를 게시했을 때 컨트롤러 메서드가 404를 반환하도록하는 문제가있었습니다. 내 API에서 HTTP 응답이 아닌 IIS 404 "파일 또는 디렉터리를 찾을 수 없음"페이지가 항상 나타납니다. 기본 404 오류 페이지를 제거하면 문제가 해결되었습니다.

다른 문제이지만 도움이 될 수 있다는 것을 결코 알지 못합니다.)


0

web.config 파일의이 구성 부분은 저에게 도움이 될 수 있습니다. system.webServer 섹션에서 :

      <security>
          <requestFiltering>
              <verbs applyToWebDAV="true">
                  <remove verb="PUT" />
                  <add verb="PUT" allowed="true" />
                  <remove verb="DELETE" />
                  <add verb="DELETE" allowed="true" />
                  <remove verb="PATCH" />
                  <add verb="PATCH" allowed="true" />
              </verbs>
          </requestFiltering>
      </security>      

0

최근 모든 Web Api 2 경로 / 컨트롤러에서 404 not found 오류가 발생했습니다. 그래서 실제 서버로 가서 호스트 이름 대신 localhost를 사용하여 찾아 보려고했는데 "404.7 Not Found-요청 필터링 모듈이 파일 확장자를 거부하도록 구성되었습니다."라는 메시지가 표시되었습니다.

이 SO 게시물은 내가 그것을 해결하는 데 도움이됩니다.


0

UrlRoutingModule-4.0의 확인란을 활성화하면 해결되었습니다.

IIS 관리자> 모듈> UrlRoutingModule-4.0 선택> 모듈 편집> "ASP.NET 응용 프로그램 또는 관리 처리기에 대한 요청에 대해서만 호출"확인란을 선택합니다.


0

나는 같은 문제가 있었다 : Visual Studio 2013과 함께 새로 설치된 컴퓨터에서 웹 API 프로젝트는 IISExpress에서 작동했지만 로컬 IIS에서는 작동하지 않았습니다. 내가 찾을 수있는 모든 것을 시도했지만 결국 웹 API에서는 문제가 필요하지 않았지만 MVC에서는 문제가 발생했습니다. 설치되어 있어도 MVC 프로젝트가 실행되지 않았습니다.

나를 위해 일한 것은 IIS를 제거하고 (Windows 기능 추가 / 제거에서) 다시 설치 한 다음 aspnet_regiis -i를 실행하는 것이 었습니다. 아마도 이것은 다른 사람에게 도움이 될 것입니다.


0

나는 사이트 / 기본 웹 사이트가 아니라 다른 포트에 바인딩 된 다른 웹 사이트에 내 웹 앱을 추가하고 있다는 것을 마침내 깨닫기 위해 많은 시간을 보냈습니다. 분명히 포트 80에서 localhost를 시도하면 404가 제공됩니다.


0

나는 아무것도하지 않고 web.config 에이 태그를 추가하면이 문제가 작동하면 다음 중 하나가 나타납니다.

  1. MVC 또는 asp.net 양식을 사용하여 동일한 프로젝트에서 Web Api 사용

  2. Global.asax의 RouteConfig 및 WebApiConfig를 GlobalConfiguration.Configure (WebApiConfig.Register)로 사용합니다. RouteConfig.RegisterRoutes (RouteTable.Routes);

  3. MVC 라우팅을 위해 friendlyurl 및 mvc 라우팅과 함께 사용하는 asp.net 양식의 두 가지 용도로 RouteConfig를 사용하십시오.

web.config에서이 태그를 사용하면 작동합니다.

<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
   .........................
</modules>
</system.webServer>

0

Web API 및 .Net Core Web API에서 동일한 문제가 발생했습니다. 디버깅하는 동안 VS 2017에서 잘 작동했지만 IIS 7.5에 게시되면 404를 반환했습니다. 저에게 해결책은 제가 사이트를 만드는 방식을 바꾸는 것이 었습니다. 웹 사이트의 루트 (사이트 ... 웹 사이트 추가를 마우스 오른쪽 단추로 클릭하여 생성)에 게시하는 대신 응용 프로그램 (웹 사이트 ... 응용 프로그램 추가를 마우스 오른쪽 단추로 클릭하여 생성)을 만들고 해당 폴더에 게시해야했습니다. Core 버전의 경우 응용 프로그램 풀 .NET Framework 버전 설정을 "관리 코드 없음"으로 변경해야했습니다.


0

나를 위해 해결책은 내 web.config 파일에서 다음 줄을 제거 하는 것이 었습니다 .

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.1.3" newVersion="4.1.1.3" />
</dependentAssembly>
<dependentAssembly>
    <assemblyIdentity name="Microsoft.IdentityModel.Tokens" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" />
</dependentAssembly>

VS가 자동으로 추가했음을 알았습니다.


0

이 webconfg를 사용해보십시오. "NewsApi.dll"을 기본 dll로 바꾸십시오!


<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\NewsApi.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    </system.webServer>
  </location>
</configuration>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.