首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET Web API应用程序在IIS7上部署时提供404

ASP.NET Web API应用程序在IIS7上部署时提供404
EN

Stack Overflow用户
提问于 2013-03-13 23:41:39
回答 8查看 106.9K关注 0票数 55

我有一个IIS Web API,它在"IIS Express“上运行时工作良好,本地主机为:1783

但是当我打开“使用IIS Express”,然后按下“创建虚拟目录”...

...I只得到了404个错误:

你知道怎么回事吗?谢谢!

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2014-05-13 04:51:41

虽然标记的答案可以让它正常工作,但您真正需要添加到webconfig的是:

代码语言:javascript
复制
    <handlers>
      <!-- Your other remove tags-->
      <remove name="UrlRoutingModule-4.0"/>
      <!-- Your other add tags-->
      <add name="UrlRoutingModule-4.0" path="*" verb="*" type="System.Web.Routing.UrlRoutingModule" preCondition=""/>
    </handlers>

请注意,这些都没有特定的顺序,尽管您希望在添加之前删除。

我们最终得到404的原因是因为Url路由模块只作用于IIS中网站的根目录。通过将模块添加到该应用程序的配置中,我们就拥有了在该应用程序的路径(子目录路径)下运行的模块,并且路由模块开始工作。

票数 41
EN

Stack Overflow用户

发布于 2015-03-26 03:36:30

对我来说,除了拥有runAllManagedModulesForAllRequests="true"之外,我还必须编辑下面的"path"属性。以前,我的path属性是"*.",这意味着它只在包含点字符的url上执行。但是,我的应用程序的url不包含点。当我将路径切换到"*"时,它就起作用了。这是我现在所拥有的:

代码语言:javascript
复制
  <system.webServer>
      <validation validateIntegratedModeConfiguration="false" />
      <modules runAllManagedModulesForAllRequests="true">
      <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="*" 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>
  </system.webServer>
票数 15
EN

Stack Overflow用户

发布于 2014-11-17 19:56:13

由于以下原因,也可能发生此问题

1.在Web.Config中

代码语言:javascript
复制
<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

如果通过Visual Studio发布,则默认情况下不会将这些程序集复制到bin文件夹中,因为Web API包是通过Nuget安装在开发计算机中的。但是,如果您希望将这些文件作为Visual Studio发布的一部分提供,则需要将这些程序集的CopyLocal设置为True

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15389855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档