2013-04-24 21 views
6

Pracuję na .Net Web API, które działa dobrze zarówno w debugowaniu, jak i na localhost IIS, ale kiedy publikuję to na serwerze, zaczyna podawać następujący błąd: -
„Message”: „Nie zasobów HTTP stwierdzono, że dopasowuje URI żądania.Net Web API Nie znaleziono zasobu HTTP pasującego do identyfikatora URI żądania

na serwerze mamy folderu aplikacji pod domyślnej witryny do tego API, ale to działa dobrze w folderze aplikacji pod domyślnej witryny lokalnego IIS, tak aby nie powinno być problemem:

Teraz próbowałem ustawić poprawne czasowniki w programie obsługi zgodnie z podanym adresem URL, ale nie działa:
HTTP 404 Page Not Found in Web Api hosted in IIS 7.5

Również mam zainstalowanego na serwerze MVC4 jak sugerowano na następującym adresem URL:
.NET Web Api - 404 - File or directory not found

także moduł WebDAV obsługi może dać błąd więc próbowałem również usunięcie go, ale to daje ten sam błąd.

Oto odcinek Web.config dla modułu, ustawienia Handler: -

<modules runAllManagedModulesForAllRequests="true" /> 
<validation validateIntegratedModeConfiguration="false" /> 
<handlers> 
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> 
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 
<remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="*" modules="IsapiModule" 
     scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" 
     preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> 
    <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="*" modules="IsapiModule" 
     scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" 
     preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> 
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
</handlers> 

ja nie gram z trasy przez wszystkich przewoźników. Czy brakuje mi czegoś dotyczącego ustawień/konfiguracji w web.config lub serwerze IIS?

+0

Czy wszystkie metody HTTP podają ten błąd, w zasadzie dowolną trasę lub tylko określone czasowniki (np.PUT i DELETE)? Czy próbowałeś już trybów klasycznych/zintegrowanych (IIS)? –

+0

Tak, wszystkie metody HTTP podają ten błąd. Używam trybu zintegrowanego w IIS 7.5. – user621504

+0

Czy rozwiązałeś problem? Teraz mam to samo ... – Slauma

Odpowiedz

0

Zmiana:

<validation validateIntegratedModeConfiguration="false" /> 
<modules> 
    <remove name="WebDAVModule"/> 
</modules> 
<handlers> 
    <remove name="WebDAV"/> 
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> 
    <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> 
    <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> 
    <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> 
    <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> 
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 
</handlers> 
1

Działa to dla mnie:

<remove name="WebDAV"/> 

Nie wiem, dlaczego jest on zainstalowany na serwerze. Ale to wydaje się, że zakłócenia bez rozszerzeń koparki

Od IIS (http://www.iis.net/learn/install/installing-publishing-technologies/installing-and-configuring-webdav-on-iis):

Microsoft wydał nowy moduł rozszerzenia WebDAV, który był całkowicie przepisany przez Internet Information Services (IIS) 7 i powyżej na systemu Windows Server® 2008. Ten nowy moduł rozszerzeń WebDAV zawierał wiele nowych funkcji, które umożliwiają autorom stron internetowych publikowanie treści lepiej niż dotychczas, i oferuje administratorom sieci większe bezpieczeństwo i opcje konfiguracyjne . Firma Microsoft wydała aktualizację modułu rozszerzenia WebDAV dla systemu Windows Server® 2008, która udostępnia współużytkowaną i obsługę wyłącznych blokad, aby zapobiec utracie aktualizacji spowodowanej nadpisywaniem.

1

Innym potencjalnym powodem jest to, czy

GlobalConfiguration.Configure(WebApiConfig.Register); 

jest po

RouteConfig.RegisterRoutes(RouteTable.Routes); 

w Global.asax.cs

To musi być wcześniej, inaczej domyślny RouteConfig trasa "zjada" trasę WebAPI - i próbuje odwzorować żądania interfejsu API na kontroler o nazwie API ...

Powiązane problemy