пользовательский httphandler в asp.net не может получить строку запроса? - PullRequest
0 голосов
/ 26 апреля 2010

Я пытался заставить эту работать. Это в основном способ заставить определенные страницы MVC работать в веб-формах cms (umbraco)

Кто-то пробовал это до меня и имел проблемы с MVC2.0 (см. Здесь) , я прочитал пост, сделал то, что было объявлено там, но с или без этого кода, я застрял по другому вопросу.

Кажется, что если я вызываю URL, он запускает обработчик, но не может запросить переданную строку запроса, переменная originalPath всегда пуста, например я называю этот URL: 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 Ответ

1 голос
/ 27 апреля 2010

нет времени для расследования, но после копирования сайта в разные места с использованием многочисленных изменений web.config (не связанных с этой ошибкой, но выяснял другие вещи) эта ошибка, похоже, решилась сама собой. так что это больше не проблема, однако я понятия не имею, что именно заставило это работать снова.

на заметке

ih.ProcessRequest(httpContext);

должно было быть,

ih.ProcessRequest(HttpContext.Current);
...