【发布时间】:2018-06-24 22:34:08
【问题描述】:
我在 iis 10.0 中托管了 web api,然后通过浏览器访问它的方法。 但同样的方法无法通过我的 MVC 应用程序访问。 出现 404 Not found 问题。
但是当我运行 web api 应用程序时,我可以通过应用程序访问方法。
我做了一些谷歌搜索,发现一些需要在托管 web api web.config 中设置的处理程序。但它也对我不起作用。
下面是我在 web api web.config 中使用的完整 system.webserver 标签。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
<remove name="FormsAuthentication" />
</modules>
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="UrlRoutingModule-4.0" />
<remove name="ApiURIs-ISAPI-Integrated-4.0" />
<add name="UrlRoutingModule-4.0" path="*." type="System.Web.Routing.UrlRoutingModule" preCondition="" verb="GET,HEAD,POST,DEBUG,PUT,DELETE" />
<add name="ApiURIs-ISAPI-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
<!--<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS,XYZ" 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,XYZ" 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,XYZ" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />-->
</handlers>
</system.webServer>
需要帮助。
【问题讨论】:
-
如果它可以通过您的浏览器访问,那么我会说 MVC 应用程序存在问题。我会仔细检查 URL/方案/身份验证等,
-
嗨克雷格,感谢您的回复。我发现它现在可以工作了。问题出在我使用的基本网址中,例如localhost/applicationname,但它应该类似于localhost/applicationname。我没有使用 url 中的最后一个斜杠,而是我在控制器中添加的那个斜杠。我刚刚在基本 url 中添加了这个斜杠并从控制器中删除,它开始正常工作。
标签: asp.net-mvc-4 asp.net-web-api2 iis-8