我正在尝试获取以下(和类似的)URL在我的ASP.net MVC4 / WebApi项目中工作:
http://127.0.0.1:81/api/nav/SpotiFire/SpotiFire.dll
负责此网址的路由如下所示:
config.Routes.MapHttpRoute( name: "Nav",routeTemplate: "api/nav/{project}/{assembly}/{namespace}/{type}/{member}",defaults: new { controller = "Nav",assembly = RouteParameter.Optional,@namespace = RouteParameter.Optional,type = RouteParameter.Optional,member = RouteParameter.Optional } );
它工作得很好,如果我删除。在文件名中,或者如果我在URL之后添加斜杠,但这也意味着我无法使用Url.Route方法等。我得到的错误是一个通用的404错误(下面的图片)。
我尝试添加< httpRuntime targetFramework =“4.5”relaxedUrlToFileSystemMapping =“true”/>到我的web.config,我也试过添加
<compilation debug="true" targetFramework="4.5"> <buildProviders> <remove extension=".dll"/> <remove extension=".exe"/> </buildProviders> </compilation>
而且似乎没有一个工作。所以我的问题基本上是如何让这个URL工作,并正确地映射?
解决方法
您可以将以下处理程序添加到< handlers>您的< system.webServer> ;:部分
<add name="ManagedDllExtension" path="api/nav/*/*.dll" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
这将使所有包含.dll的请求都通过托管管道提供。还要注意,我如何限制它们仅限于GET动词以限制性能影响。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。