我有一个IIS Web API,它在"IIS Express“上运行时工作良好,本地主机为:1783
但是当我打开“使用IIS Express”,然后按下“创建虚拟目录”...
...I只得到了404个错误:
你知道怎么回事吗?谢谢!
发布于 2014-05-13 04:51:41
虽然标记的答案可以让它正常工作,但您真正需要添加到webconfig的是:
<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中网站的根目录。通过将模块添加到该应用程序的配置中,我们就拥有了在该应用程序的路径(子目录路径)下运行的模块,并且路由模块开始工作。
发布于 2015-03-26 03:36:30
对我来说,除了拥有runAllManagedModulesForAllRequests="true"
之外,我还必须编辑下面的"path"
属性。以前,我的path属性是"*."
,这意味着它只在包含点字符的url上执行。但是,我的应用程序的url不包含点。当我将路径切换到"*"
时,它就起作用了。这是我现在所拥有的:
<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>
发布于 2014-11-17 19:56:13
由于以下原因,也可能发生此问题
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
如果通过Visual Studio发布,则默认情况下不会将这些程序集复制到bin文件夹中,因为Web API包是通过Nuget安装在开发计算机中的。但是,如果您希望将这些文件作为Visual Studio发布的一部分提供,则需要将这些程序集的CopyLocal设置为True
https://stackoverflow.com/questions/15389855
复制相似问题