1
を認識しないI次のコードを持っている:WCFサービスは、正しいJSON
[DataContract]
public class OptimizationServiceSettings
{
[DataMember]
public bool StealthMode { get; set; }
}
サーバー:
[WebInvoke(Method = "POST", UriTemplate = "SetSettings", BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
[OperationContract]
public void SetSettings(OptimizationServiceSettings settings)
{
if (settings != null)
{
_stageOptimizer.ServiceSettings = settings;
}
else
{
Trace.TraceError("Attemp to set null OptimizationServiceSettings");
}
}
クライアント:何らかの理由でSetSettings
方法については
private static void SetSettings()
{
OptimizationServiceSettings op = new OptimizationServiceSettings();
op.StealthMode = true;
string jsonInput = ToJson(op);
var client = new WebClient();
client.Headers["Content-type"] = "application/json";
client.Encoding = Encoding.UTF8;
var response = client.UploadString("http://localhost:8080/BlocksOptimizationServices/SetSettings", "POST", jsonInput);
}
private static string ToJson<T>(T data)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, data);
return Encoding.Default.GetString(ms.ToArray());
}
}
サーバは常にヌルsettings
オブジェクトを取得します。 settings
オブジェクトタイプをstring
に変更すると、すべて動作します。ここで何が間違っているのか分かりません。すべてが正しいように見えます。ここで
は、私は、クライアント上でSetSettings
になったjsonInput
文字列の例である:あなたがラップするrequestbody指定
"{\"StealthMode\":\"true\"}"
投稿するjsonの文字列は何ですか?ここにjsonInput変数の値を投稿できますか? –
@ PankajKapareが追加されました –
このようなリクエストを送信しようとしました{"settings":{"StealthMode": "true"}} –