我正试图让以下(和类似的)网址在我的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
等方法。 我得到的错误是通用的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正常工作并正确映射?
namespace
和type
部分。只有member
部分可以是可选的,因为它被定义在路由的末尾。 - Darin Dimitrov