IIS 7 UrlReferrer выдает исключение - PullRequest
4 голосов
/ 29 ноября 2011

Когда я получаю URL реферера, IIS 7 выдает исключение.Мой код выглядит так:

var referrer = Request.UrlReferrer == null ? null : Request.UrlReferrer.AbsoluteUri;

Приложение выдает ArgumentException с сообщением об ошибке,

«Значение не попадает в ожидаемый диапазон».* Нет проблем в IIS 6.

Это исключение возникает, когда по странице перемещается с помощью "Response.Redirect"

На главной странице приложения есть метод Response.Redirect в соответствии с ролью текущего пользователя,Главная страница пользователя выдает это исключение.

Как получить URL реферера в IIS 7.

Спасибо,

1 Ответ

3 голосов
/ 13 февраля 2012

С такой же проблемой столкнулся при попытке получить доступ к объекту запроса из System.Threading.Task, запущенной при обработке запроса.Я использую задачу, чтобы сократить время ответа - в моем случае большая часть обработки может быть выполнена после отправки запроса.То есть у меня было что-то вроде:

public ActionResult SomeAction()
{
    new System.Threading.Task(() => {

        // here I used this.Request.UrlReferrer and got weird ArgumenException error

    }).Start();

    return someActionResultThatDoesntRequireProcessing;
}

Я извлек UrlReferrer (и другой нужный мне this.Request.stuff) в отложенной обработке) в отдельную переменную "closure" (я выбралони имеют самые основные типы):

public ActionResult SomeAction()
{
    var urlReferrerAbs = this.Request.UrlReferrer.AbsoluteUri;
    var clientAddress = this.Request.UserHostAddress;
    // save other stuff from the request object

    new System.Threading.Task(() => {

        // here I used urlReferrerAbs instead of this.Request.UrlReferrer and the error has gone!

    }).Start();

    return someActionResultThatDoesntRequireProcessing;
}

Это сработало для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...