Asp.net
帶有文件名的 ASP.net MVC4 WebApi 路由
我正在嘗試讓以下(和類似的)網址在我的 ASP.net MVC4/WebApi 項目中工作:
http://127.0.0.1:81/api/nav/SpotiFire/SpotiFire.dll負責此 url 的路由如下所示:
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-methods 等。我得到的錯誤是一個通用的 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 動詞以限制性能影響。
