fer*_*ero 11 iis asp.net-mvc asp.net-mvc-routing asp.net-mvc-4
在我的Web应用程序中,我有一个如下所示的路由:
routeCollection.MapRoute(
"AdfsMetadata", // name
"FederationMetadata/2007-06/FederationMetadata.xml", // url
new { controller = "AdfsController", action = "MetaData" }); // defaults
Run Code Online (Sandbox Code Playgroud)
这条路线背后的想法是与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也行不通.除了IIS试图访问不存在的物理文件之外,它只是404而没有进一步的信息.
有人有解决方案吗?我只想将此URL路由到控制器操作.
PS:我不是100%确定原因是升级到MVC4,这只是猜测,因为错误发生在升级的大致同一时间,并且相同的路由在另一个仍在使用MVC3的项目中工作.
编辑:
我有一个ControllerFactory
需要完整类名的自定义(AdfsController
而不是Adfs
),所以Controller
在这种情况下后缀是正确的.
Dar*_*rov 15
将以下内容添加到节点的<handlers>
部分<system.webServer>
:
<add
name="AdfsMetadata"
path="/FederationMetadata/2007-06/FederationMetadata.xml"
verb="GET"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
Run Code Online (Sandbox Code Playgroud)
这指示IIS对指定URL的GET请求应由托管管道处理,而不应视为静态文件并由IIS直接提供.
我有一个自定义的ControllerFactory需要完整的类名(AdfsController而不是Adfs),因此在这种情况下后缀Controller是正确的.
请仔细检查一下.Controller
在路径定义中尝试使用和不使用后缀.
归档时间: |
|
查看次数: |
7043 次 |
最近记录: |