【问题标题】:Hosted web api is accessible through browser but not through application托管 web api 可通过浏览器访问,但不能通过应用程序访问
【发布时间】: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


【解决方案1】:

在应用程序中传递 Web api url 时出现了一些错误。

例如:对于我使用的 web api 根 url,如下所示:

http://localhost:25968

但应该是这样的:http://localhost:25968/

最后一个斜线丢失,因为它的 web api 方法没有通过应用程序访问。

【讨论】:

    猜你喜欢
    • 2013-10-12
    • 1970-01-01
    • 2013-07-20
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 2017-06-01
    • 2020-03-27
    • 1970-01-01
    相关资源
    最近更新 更多