私のwebApiコントローラー
[HttpPost]
public ISearchProviderCommandResult ExecuteCommand(ISearchProviderCommand command)
{
MySearchProvider searchProvider = new MySearchProvider();
return searchProvider.ExecuteCommand(command);
}
私のsearchCommandオブジェクト
[Serializable]
class SearchProviderCommand : ISearchProviderCommand
{
public string OperationContext {get; set;}
public string OperationId{get; set;}
}
webapiコントローラーにブレークポイントがあり、HttpWebResponse response =(HttpWebResponse)request.GetResponse();という行にブレークポイントがあります。
webapiコントローラーにステップインしようとすると、500エラーが発生し、webapiコントローラー内のブレークポイントに到達しません。これが私の質問です:
- 私は何が間違っているのですか?
- 複雑なオブジェクトをWebAPIリクエストに送信できますか?
編集:asp.netフォーラムとレオンの指示に基づいて、インターフェイスの代わりにオブジェクトを使用するようにWebApiコントローラーを変更しました。これは機能します。
[HttpPost]
public SearchProviderCommandResult ExecuteCommand(SearchProviderCommand command)
{
MySearchProvider searchProvider = new MySearchProvider();
return searchProvider.ExecuteCommand(command);
}
結果からオブジェクトを再構築する方法を教えてください。
編集:ベースのレオンの提案-ここに興味がある人のために私の最後の発信者コードです
public result ExecuteCommand(ISearchProviderCommand searchCommand)
{
//serialize the object before sending it in
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonInput = serializer.Serialize(searchCommand);
HttpClient httpClient = new HttpClient() { BaseAddress = new Uri(ServiceUrl) };
StringContent content = new StringContent(jsonInput, Encoding.UTF8, "application/json");
var output = httpClient.PostAsync(ServiceUrl, content).Result;
//deserialize the output of the webapi call
result c = serializer.Deserialize<result>(output.Content.ReadAsStringAsync().Result);
return c;
}
}
public class result : ISearchProviderCommandResult
{
public object Result { get; set; }
}