С такой же проблемой столкнулся при попытке получить доступ к объекту запроса из 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;
}
Это сработало для меня.