Потерян доступ к HTTP-запросу после обновления до .NET Framework 4.5

У меня есть служба WCF, которая принимает запрос POST от jqGrid в виде формы HTML и возвращает JSON.

Пока дело было на .NET 4.0, все работало нормально. Я мог получить доступ к полям формы внутри службы через request["fieldName"]. После того, как я обновился до .NET 4.5, все мои request["fieldName"] стали пустыми. Есть ли какая-то известная проблема с .NET 4.5, WCF и HttpContext.Current.Request?

Вот пример:

 POST http://{REMOVED}/Grid.svc/Execute HTTP/1.1
 Accept: application/json, text/javascript, */*; q=0.01
 X-Requested-With: XMLHttpRequest
 Content-Type: application/x-www-form-urlencoded; charset=UTF-8
 Accept-Encoding: gzip, deflate

 _search=false&nd=1355782305975&rows=15&page=1&sidx=modified&sord=desc&search=&category=all

а вот сервис:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class GridAccess
{
    [OperationContract]
    [WebInvoke(Method = "POST",
           BodyStyle = WebMessageBodyStyle.Bare,
           ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json
    )]
    public GridResponse Execute()
    {
        var request = System.Web.HttpContext.Current.Request;

Все ссылки на request["fieldName"] раньше работали в .NET 4.0, а теперь, после обновления до .NET 4.5, возвращают NULL.


person user1044169    schedule 17.12.2012    source источник


Ответы (2)


Основная причина проблемы выглядит такой же, как проблема, описанная в сообщении: Установка Visual Studio 2012 сломала мой проект WCF 2010. Я вижу, что ваш код снова начинает работать, если я буду следовать обходному пути, предложенному в этом посте. Вы можете обратиться к это сообщение в блоге для получения дополнительной информации.

person Praburaj    schedule 18.12.2012
comment
Спасибо. Пожалуйста, держите нас в курсе любых других ошибок с той же основной причиной, и сообщите нам, когда вы их исправите. - person John Saunders; 19.12.2012
comment
Я уже откатился на VS 2010 и удалил .NET 4.5. Все возвращается к работе с .NET 4.0. В настоящее время я отказываюсь от идеи обновления до .NET 4.5. - person user1044169; 19.12.2012

Для решения подобных вопросов. Просто добавьте System.Web DLL в сборку. Затем укажите это, например, так:

System.Web.HttpRequest request = System.Web.HttpContext.Current.Request; 
person Ziggy Rafiq    schedule 30.10.2016