【发布时间】:2012-12-28 22:42:15
【问题描述】:
在我的网络应用程序中,我有一个如下所示的路由:
routeCollection.MapRoute(
"AdfsMetadata", // name
"FederationMetadata/2007-06/FederationMetadata.xml", // url
new { controller = "AdfsController", action = "MetaData" }); // defaults
此路由背后的想法是更好地与 Microsoft AD FS 服务器 (2.0+) 配合使用,此时您只需指定主机名即可查找 AD FS 元数据。使用 MVC3 一切正常。但是我们最近将项目升级到了 MVC4,现在对该 URL 的调用导致 404,错误页面上提到的处理程序是StaticFile,物理路径是D:\path\to\my\project\FederationMetadata\2007-06\FederationMetadata.xml。我假设 MVC 或 ASP.NET “认为”它必须是对静态文件的请求并查找文件,但它不是文件。数据是动态生成的——这就是我将 URL 路由到控制器操作的原因。问题是即使是 Phil Haack 的 Route Debugger 也不起作用。它只是一个 404,除了 IIS 试图访问一个不存在的物理文件之外没有其他信息。
有人对此有解决方案吗?我只想将此 URL 路由到控制器操作。
PS:我不是 100% 确定原因是升级到 MVC4,这只是一个猜测,因为错误发生在升级的大约同一时间,并且路线相同在另一个仍在使用 MVC3 的项目中工作。
编辑:
我有一个自定义的ControllerFactory,它需要完整的类名(AdfsController 而不是Adfs),所以在这种情况下后缀Controller 是正确的。
【问题讨论】:
标签: asp.net-mvc iis asp.net-mvc-4 asp.net-mvc-routing