我有一个ASP.NET Web API与本地主机上的“IIS快车”运行时正常工作:1783
但是,当我不交叉“使用IIS快车”,然后按“创建虚拟目录” ...
......我只是得到404错误:
任何想法什么错? 谢谢!
我有一个ASP.NET Web API与本地主机上的“IIS快车”运行时正常工作:1783
但是,当我不交叉“使用IIS快车”,然后按“创建虚拟目录” ...
......我只是得到404错误:
任何想法什么错? 谢谢!
虽然标注的回答得到它的工作,你真正需要添加到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网站的根目录。 通过添加模块来此应用程序的配置中,我们遇到了这个应用程序的路径下运行的模块(你的子目录的路径),并在路由模块踢。
对于我来说,除了具有runAllManagedModulesForAllRequests="true"
我也有编辑的"path"
属性下方。 以前我的path属性是"*."
这意味着它仅在网址包含点字符执行。 然而,我的应用程序的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>
您可能需要安装修补程序KB980368 。
本文介绍了一个更新,使某些Internet信息服务(IIS)7.0或IIS 7.5的处理程序来处理其URL不以句点结尾的请求。 具体地,这些处理程序被映射到“”。 请求的路径。 目前,被映射到一个处理一个“” 请求路径只处理请求其URL以句点结尾。 例如,处理器只处理请求其URL类似于以下网址:
http://www.example.com/ExampleSite/ExampleFile 。
应用此更新之后,处理程序映射到一个“*”。 请求路径可以处理其URL以句点,并要求其URL不以句点结尾结束请求。 例如,处理程序现在可以处理类似于下面的URL的请求:
http://www.example.com/ExampleSite/ExampleFile
http://www.example.com/ExampleSite/ExampleFile 。
应用此修补程序之后,ASP.NET 4应用程序可以处理无扩展名的URL的请求。 因此,设法在此之前处理程序的执行运行将运行的HttpModules。 在某些情况下,可以的HttpModules返回扩展名的网址错误。 例如,写一个HttpModule预期,当它试图访问HttpContext.Session属性只的.aspx请求现在可能返回错误。
此问题也可能发生由于以下
1.In 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
这些组件将不会在bin文件夹在默认情况下,如果复制发布是通过Visual Studio,因为Web API包在开发机通过安装的NuGet。 不过,如果你想获得这些文件可作为Visual Studio中的一部分发布,那么你需要CopyLocal设置为True,这些组件
有人说runAllManagedModulesForAllRequests =“true”会存在性能问题和MVC路由问题。 他们建议使用如下:
http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html
http://bartwullems.blogspot.com/2012/06/optimize-performance-of-your-web.html
我对你使用Visual Studio 2012,下载并安装更新2,微软最近发布(作为二千○一十三分之四)。
的Visual Studio 2012更新2
有在更新与此问题相关的一些bug修复。
我不得不为同样的问题。 AFER很多R&d的我发现这个问题。
但只要你的配置是finne平均是ASPNET 64位和IIS很好然后我看到的唯一问题是路径“网络API以当地directiry路径”,因此需要使用Avid它。 通过这样的..〜../../../ API /产品/
非常感谢你张贴的问题。 我很多leanred生根粉和IIS配置文件中的其他设置。
我一直在争夺这个问题几天尝试各种事物提出的。 我的dev的机器工作正常,但新机,我部署到是给我的404错误。
在IIS管理器,我对比了两台机器的处理器映射,实现了很多处理的人失踪。 原来,ASP.Net 5没有在机器上安装。
对我来说,这个问题比其他的答案稍有不同,因为我只收到关于OPTIONS 404,但我已经在我的集成扩展名的URL处理程序选项特别声明选项。 很混乱。
通过添加以下安全节点到web.config中是必要的敲了这一点-包括上下文满system.webserver:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<remove name="WebDAV" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<security>
<requestFiltering>
<verbs>
<remove verb="OPTIONS" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
虽然它不是这个问题完美的答案,它是在谷歌“IIS OPTIONS 404”的第一个结果,所以我希望这可以帮助别人了; 今天花了我一个小时。
对我来说,我收到了404错误在我的网站不使用IIS快递(使用本地IIS)运行时使用IIS快速的应用程序。 如果我将关闭用于运行IIS Express中的浏览器,那么404会消失。 对我来说,我有我的IIS快递项目调用到本地IIS服务,所以我转换IIS快递项目中使用本地IIS,然后一切工作。 看来,你不能在同一时间因某种原因同时运行一个非IIS Express和本地IIS网站。