私はWCFWebサービスに取り組んでいます。次のように宣言されたJsonstringheサービスを返すPostサービスを作成する必要があります。
[WebInvoke(UriTemplate = "GetMatAnalysis", ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.WrappedRequest,
Method = "POST")]
string GetMatAnalysis(Stream image);
このメッセージでは、を使用してオブジェクトをシリアル化してJavaScriptSerializer().Serialize()
から返しています。
ただし、応答を受け取ると、文字列の最初と最後に余分な二重引用符があります。たとえば、私は次のようになっています:"{"results" : 10 }"
の代わりに{"results" : 10 }
リターンタイプを次のように変更しようとしました:次のSystem.ServiceModel.Channels.Message
エラーが発生します:
An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:
System.InvalidOperationException: An exception was thrown in a call to a WSDL export extension: System.ServiceModel.Description.DataContractSerializerOperationBehavior contract: http://tempuri.org/:IMyWebServices ----> System.InvalidOperationException: The operation 'GetMatAnalysis' could not be loaded because it has a parameter or return type of type System.ServiceModel.Channels.Message or a type that has MessageContractAttribute and other parameters of different types. When using System.ServiceModel.Channels.Message or types with MessageContractAttribute, the method must not use any other types of parameters.
二重引用符なしでjson文字列を返すようにするにはどうすればよいですか?
追加情報:
このようにGETリクエストを使用すると:
[OperationContract(Name = "Messages")]
[WebGet(UriTemplate = "Messages/GetMessage", ResponseFormat = WebMessageFormat.Json)]
Message GetAdvertisment();
戻り値のタイプはメッセージであり、正しく機能します。受信したJson文字列は正しいです。
どんな助けでも大歓迎です。ありがとうございました