加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC4 WebApi路由中包含文件名

发布时间:2020-12-15 18:43:31 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试获取以下(和类似的)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}/{nam
我正在尝试获取以下(和类似的)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&gt ;:部分
<add 
    name="ManagedDllExtension" 
    path="api/nav/*/*.dll" 
    verb="GET" 
    type="System.Web.Handlers.TransferRequestHandler" 
    preCondition="integratedMode,runtimeVersionv4.0" 
/>

这将使所有包含.dll的请求都通过托管管道提供。还要注意,我如何限制它们仅限于GET动词以限制性能影响。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读