0

HTMLフォームの形式でjqGridからPOSTリクエストを受け入れ、JSONを返すWCFサービスがあります。

物事は.NET 4.0上にありましたが、すべてうまくいきました。経由でサービス内のフォーム フィールドにアクセスできましたrequest["fieldName"]。.NET 4.5 にアップグレードすると、すべてrequest["fieldName"]が空白になりました。.NET 4.5、WCF、および .NET に関する既知の問題はあり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 を返します。

4

2 に答える 2

2

この問題の根本的な原因は、投稿で説明されている問題と同じようです: Visual Studio 2012 のインストールで 2010 WCF プロジェクトが壊れました。この投稿で提案されている回避策に従うと、コードが再び機能し始めることがわかります。詳細については、このブログ投稿を参照してください。

于 2012-12-18T22:41:42.077 に答える
0

このような問題を解決するために。System.Web DLL をアセンブリに追加するだけです。次に、たとえば次のように参照します。

System.Web.HttpRequest request = System.Web.HttpContext.Current.Request; 
于 2016-10-30T13:28:29.437 に答える