升级到.NET Framework 4.5后无法访问HTTP请求

时间:2012-12-17 23:20:45

标签: asp.net wcf .net-4.5 asp.net-4.5

我有一个WCF服务,它以HTML格式从jqGrid接受POST请求并返回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。

2 个答案:

答案 0 :(得分:2)

问题的根本原因与帖子Visual Studio 2012 install broke my 2010 WCF project中描述的问题相同。如果我按照本文中建议的工作方式,我可以看到您的代码重新开始工作。有关详细信息,请参阅this博客文章。

答案 1 :(得分:0)

解决这些问题。只需将System.Web DLL添加到程序集即可。 然后像这样引用它,例如:

System.Web.HttpRequest request = System.Web.HttpContext.Current.Request;