asp.net中的自定义httphandler无法获取请求查询字符串?

时间:2010-04-26 14:53:04

标签: c# asp.net-mvc-2 umbraco ihttphandler

我一直试图让this工作。它基本上是一种让某些MVC页面在webforms cms(umbraco)中工作的方法

有人在我面前试过并且遇到了MVC2.0 (see here)的问题,我已经阅读了帖子,做了那里宣布的内容,但无论有没有代码,我似乎都陷入了另一个问题。

似乎,如果我调用一个url,它会触发处理程序,但无法请求传递的查询字符串,变量originalPath始终为空, 例如,我称之为网址:http://localhost:8080/mvc.ashx?mvcRoute=/home/RSVPForm 处理程序应该获取mvcRoute但它始终为空。因此被重写为简单/然后返回资源无法找到错误。

以下是我现在使用的代码:

public void ProcessRequest(HttpContext httpContext)
{
        string originalPath = httpContext.Request.Path;
        string newPath = httpContext.Request.QueryString["mvcRoute"];
        if (string.IsNullOrEmpty(newPath))
            newPath = "/";

        HttpContext.Current.RewritePath(newPath, false);
        IHttpHandler ih = (IHttpHandler)new MvcHttpHandler();
        ih.ProcessRequest(httpContext);
        HttpContext.Current.RewritePath(originalPath, false);
}

我想对此提出一些新的意见,因为我正盯着这样一个简单的问题,而我认为mvc本身会遇到更多问题。

1 个答案:

答案 0 :(得分:1)

没有时间进行调查,但在将网站复制到不同的位置后,使用了大量的web.config更改(与此错误无关但正在解决其他问题)此错误似乎已经解决了。所以它不再是一个问题,但我不知道究竟是什么让它再次发挥作用。

旁注

ih.ProcessRequest(httpContext);

应该是,

ih.ProcessRequest(HttpContext.Current);