当我从我的MVC应用程序请求以下URL时,我不断被重定向到HomeController。
www.mymvcapp.com/?m=standardvalue&a=someothervalue&code=12345
现在我试图通过编辑Global.asax.cs请求路由来克服这个问题,例如
routes.IgnoreRoute(".*m=standardvalue.*");
所以我期望的结果是,当URL包含“m = standardvalue”时,它不会将我带到HomeController。这可能是我完全错了,有人可以指出我解决问题的好方向。
其他信息: 该链接看起来不像MVC,因为Apllication Request Routing(IIS7)捕获此URL并将其转换为运行PHP的Web服务器。
答案 0 :(得分:1)
这里需要的是路线约束。如果请求的URL没有目标控制器并且包含一个变量m等于standardvalue的查询字符串,则约束将返回true。
public class DefaultWithoutParamsConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext,
Route route,
string parameterName,
RouteValueDictionary values,
RouteDirection routeDirection)
{
return values[parameterName] == null &&
httpContext.Request.QueryString["m"] == "standardvalue";
}
}
现在只需将此约束添加到您的忽略列表中:
routes.IgnoreRoute(
"{*controller}",
new { controller = new DefaultWithoutParamsConstraint() }
);