【问题标题】:Lost access to HTTP Request after upgrade to .NET Framework 4.5升级到 .NET Framework 4.5 后失去对 HTTP 请求的访问权限
【发布时间】:2012-12-17 23:20:44
【问题描述】:

我有一个 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。

【问题讨论】:

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


    【解决方案1】:

    问题的根本原因看起来与帖子中描述的问题相同:Visual Studio 2012 install broke my 2010 WCF project。如果我按照这篇文章中建议的解决方法,我可以看到您的代码再次开始工作。您可以参考this 博客文章了解更多信息。

    【讨论】:

    • 谢谢。请随时向我们发布具有相同根本原因的任何其他错误,并在您修复它们时通知我们。
    • 我已经回滚到 VS 2010 并卸载了 .NET 4.5。事情又回到了使用 .NET 4.0。这时候,我正在放弃升级到.NET 4.5的想法
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 2012-10-06
      • 1970-01-01
      相关资源
      最近更新 更多