- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试将 301 重定向添加到我在 MVC 中的路由
为此,我尝试从 MvcHandler 继承。处理程序使用正确的值进行实例化。但我永远无法调试重写的方法。
有人可以向我展示这方面的工作尝试吗? asp.net 管道似乎只是在做自己的事情......
public class CodeHttpHandler : MvcHandler
{
public CodeHttpHandler(RequestContext p_requestContext)
: base(p_requestContext)
{
}
protected override void ProcessRequest(HttpContext p_httpContext)
{
}
protected override void ProcessRequest(HttpContextBase p_httpContext)
{
}
}
更新:
这是我目前找到的解决方案:
public class CodeRouteHandler : IRouteHandler
{
public System.Web.IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new CodeHandler(requestContext);
}
}
public class CodeRouteConstants
{
public const string CODE = "code";
public const string REDIRECT = "Redirect";
}
public class CodeHandler : MvcHandler
{
public CodeHandler(RequestContext requestContext)
: base(requestContext)
{
}
private int? HandleCodedRoute(System.Web.HttpContextBase httpContext)
{
var context = httpContext.Request.RequestContext.RouteData;
if (context.DataTokens.ContainsKey(CodeRouteConstants.CODE))
{
var statusCode = Int32.Parse(context.DataTokens[CodeRouteConstants.CODE] as string ?? "500");
httpContext.Response.StatusCode = statusCode;
if (context.DataTokens.ContainsKey(CodeRouteConstants.REDIRECT))
{
var redirectionMap = context.DataTokens[CodeRouteConstants.REDIRECT] as string ?? "404";
foreach (var v in context.Values)
{
redirectionMap = redirectionMap.Replace(string.Format("{{{0}}}", v.Key), v.Value as string);
}
httpContext.Response.AddHeader("Location", redirectionMap);
}
httpContext.Response.End();
return statusCode;
}
return null;
}
protected override System.IAsyncResult BeginProcessRequest(System.Web.HttpContext httpContext, System.AsyncCallback callback, object state)
{
var statusCode = HandleCodedRoute(new HttpContextWrapper(httpContext));
if (statusCode.HasValue)
{
return null;
}
return base.BeginProcessRequest(httpContext, callback, state);
}
protected override System.IAsyncResult BeginProcessRequest(System.Web.HttpContextBase httpContext, System.AsyncCallback callback, object state)
{
return base.BeginProcessRequest(httpContext, callback, state);
}
protected override void ProcessRequest(System.Web.HttpContext httpContext)
{
base.ProcessRequest(httpContext);
}
protected override void ProcessRequest(System.Web.HttpContextBase httpContext)
{
base.ProcessRequest(httpContext);
}
}
最佳答案
嘿,我也刚遇到这个问题。我在 ProcessRequest() 中的断点从未被击中。我没有针对您的问题的完整解决方案,但我确实有一个解决方法可以让您得到想要的东西。尝试从 MvcHandler 而不是 ProcessRequest() 覆盖 BeginProcessRequest() 方法。上下文应该包含路由(操作和 Controller )信息,如果这是您正在寻找的信息。
关于.net - 尝试向 MvcHandler 添加功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2841307/
我目前正在尝试将 301 重定向添加到我在 MVC 中的路由 为此,我尝试从 MvcHandler 继承。处理程序使用正确的值进行实例化。但我永远无法调试重写的方法。 有人可以向我展示这方面的工作尝试
我在 NewRelic 中进行了一些跟踪,我看到几乎每个请求都包含对“System.Web.Mvc.MvcHandler.ProcessAsyncRequest()”的调用。 此函数调用可能需要 30
我在 MvcHandler 中看到一个名为 ProcessRequest 的函数,但我无法弄清楚它何时会被调用? 什么时候调用它,谁/什么调用它? 最佳答案 它由 ASP .Net 管道调用,作为其生
我正在使用 new relic 来监控我的网站,这种方法是我 80% 的网络请求的瓶颈,即使是简单的 GET 请求,这有什么作用? 最佳答案 哥们你用的是哪个版本? 这是以前版本中的一个已知问题。 升
我遇到了这个奇怪的错误,我无法弄清楚。在 Windows 8.1、IIS 8.5 上运行。该网站在 Microsoft Azure 上运行良好,因此肯定是本地配置问题。我在 IIS Express 中
我是一名优秀的程序员,十分优秀!