asp.net – 无法将HttpHandler映射到“路径/ *”通配符映射
|
所以我一直在尝试将http模块映射到MVC3站点的子路径。它应该是很简单,因为我明白,但它没有工作。该模块的设置如下: <handlers> <add name="Nancy" path="api/*" verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" allowPathInfo="true" /> </handlers> 一个匹配的部分也是为了iis6,所以我可以在webdev.webserver下运行它。但是测试两个部署到我的本地iis7(在Win7下)和webdev.webserver,只有/ api实际上调用处理程序。如果我打电话给/ api / {anything},它只返回一个404。 我相信我只是“做错了(tm)”,但任何帮助将不胜感激。 注意:我还尝试了一些其他配置,包括使用标签和创建/ api文件夹,并使用完整的通配符将web.config添加到该文件夹。 解决方法URLRoutingModule-4.0是在你的nancy处理程序之前列出的所有处理程序。因此,在您的处理程序被击中之前,它将会发挥作用。你可以删除处理程序添加你的,并添加回如下:<handlers>
<remove name="BlockViewHandler" />
<remove name="UrlRoutingModule-4.0" />
<add verb="*" path="robots.txt" name="robots" type="System.Web.StaticFileHandler"/>
... custom handlers here
<add name="Nancy" path="api/*" verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" allowPathInfo="true" />
... now add back UrlRoutingModule and BlockViewHandler
<add path="*" verb="*" name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule,System.Web,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" preCondition="managedHandler" />
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
您可以在“处理程序映射”中的IIS7中看到处理程序顺序,选择“查看有序列表”,它将列出将处理程序的顶部(第一个)加载到底部(最后)的顺序。 您的/ api文件夹中可能需要第二个Web.config <?xml version="1.0"?>
<configuration>
<system.web>
<httpHandlers>
<clear />
<add name="Nancy" path="*" verb="*" type="Nancy.Hosting.Aspnet.NancyHttpRequestHandler" allowPathInfo="true" />
</httpHandlers>
</system.web>
</configuration>
同样,这是我通常在网站上的“/ static”内容。我还没有找到如何规避秒web.config的需要。 编辑 我很难想出这一点,当我不得不同样,似乎我的记忆没有给我很好的。我不指定一个路径/ *处理程序在任何地方,我有这个: (只指定简单的通配符/完全限定的路径来围绕UrlRouting) <location path="." inheritInChildApplications="false">
<system.webServer>
<!--
ml: in .NET 4.0 its now safe to remove from the modules section.
Make sure you have a *. mapping to a ExtensionLessUrl hanlder in IIS
this should improve performance a tad albeit neglectable.
see: http://blogs.msdn.com/b/tmarq/archive/2010/04/01/asp-net-4-0-enables-routing-of-extensionless-urls-without-impacting-static-requests.aspx
-->
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="false" />
<handlers>
<remove name="BlockViewHandler" />
<remove name="UrlRoutingModule-4.0" />
<add verb="*" path="robots.txt" name="robots" type="System.Web.StaticFileHandler"/>
.. Some company handlers i can't list
<add path="*" verb="*" name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule,PublicKeyToken=b03f5f7f11d50a3a" preCondition="managedHandler" />
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</location>
然后在我的/Content/web.config文件中,我设置如下: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<clear />
<add name="StaticFiles" path="*" verb="*" modules="StaticFileModule" resourceType="Either" requireAccess="None" />
</handlers>
<staticContent>
<clientCache cacheControlMaxAge ="31.00:00:00" cacheControlMode="UseMaxAge" />
</staticContent>
</system.webServer>
</configuration>
/ Content /的处理程序列表现在如下所示: 哪个是肯定的,我可以通过StaticFileModule提供/ Content /中的任何东西。这里的技巧似乎是指定:inheritInChildApplications =“false”。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何在一个视图中使用两个IENumerable模型
- asp.net-mvc – 为什么MVC控制器必须在其类名上具有尾随的’
- ASP.NET和会话 – 新的浏览器实例与新的浏览器窗口
- asp.net-mvc – VS 2015:无法加载文件或程序集’System.We
- regex – ASP Classic:检查字符串是否只包含有效字符
- asp.net – 对于未更改的静态内容,Amazon CloudFront不会一
- asp.net-mvc – 如何在ASP.NET MVC控制器中设置十进制分隔符
- 在ASP.NET中导入一个类
- asp.net-mvc – ASP.NET MVC – 动态授权
- asp.net-mvc – 使用Repository/Service Pattern和MVC时缓存
- asp.net-mvc – asp.net mvc单选按钮状态
- asp.net-mvc-4 – 升级到.NET 4.5和EF 5后,“启用
- 问题在ASP.NET 5(Core)中添加对类库项目的引用
- asp.net-mvc – 具有DateTime的MVC 3编辑器模板
- asp.net-mvc-3 – 动态加载部分视图
- asp.net – 两次调用HttpModule EndRequest处理程
- asp.net – webservice和web应用程序有什么区别?
- asp.net – 如何以编程方式将位置元素添加到Web配
- One to One 的数据库模型设计与NHibernate配置
- asp.net-mvc-3 – MVC3 Razor使用Html.BeginForm
