NuGet(pkg version 0.3.0)経由でWCF WebApiスタック(プレビュー4)を使用しています。HttpClient
を使用してポストをポストする方法を理解できないようです。次を考えるWCF WebApiのHttpClientでポストをポストする方法
:Post
メソッドが呼び出されると
Public Class MyInfo
Public Property MyDate As DateTime
Public Property MyId As Guid
End Class
...
Dim value = New MyInfo With {.MyDate = Today, .MyId = Guid.NewGuid()}
Using client as New HttpClient(baseUri)
Using response = client.Post(requestUri, New ObjectContent(Of MyInfo)(value))
' Do stuff
End Using
End Using
...
、私は次の例外を取得:
The 'XmlSerializer' serializer cannot serialize the type 'MyInfo'.
at Microsoft.ApplicationServer.Http.XmlMediaTypeFormatter.GetSerializerForType(Type type)
at Microsoft.ApplicationServer.Http.XmlMediaTypeFormatter.OnWriteToStream(Type type, Object value, Stream stream, HttpContentHeaders contentHeaders, TransportContext context)
at Microsoft.ApplicationServer.Http.MediaTypeFormatter.WriteToStream(Type type, Object instance, Stream stream, HttpContentHeaders contentHeaders, TransportContext context)
at Microsoft.ApplicationServer.Http.ObjectContent.WriteToStreamInternal(Stream stream, TransportContext context)
at Microsoft.ApplicationServer.Http.ObjectContent.SerializeToStream(Stream stream, TransportContext context)
at System.Net.Http.HttpContent.LoadIntoBuffer(Int32 maxBufferSize)
at System.Net.Http.HttpClientChannel.PrepareWebRequestForContentUpload(HttpWebRequest webRequest, HttpRequestMessage request)
at System.Net.Http.HttpClientChannel.CreateAndPrepareWebRequest(HttpRequestMessage request)
at System.Net.Http.HttpClientChannel.Send(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.Send(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.Send(HttpRequestMessage request)
at System.Net.Http.HttpClient.Post(Uri requestUri, HttpContent content)
at System.Net.Http.HttpClient.Post(String requestUri, HttpContent content)
...
これはNuGet 0.3.0パッケージを使用しています。
私は<Serializable()>
とさらに<DataContract()>
からMyInfo
を追加しようとしましたが、それは役に立ちませんでした。私はちょうど何か間違っていますか?
ここでStackOverflowにthis postが見つかりました。誰かが私が上記のようなことをしているように見えます。私は彼の仕事を複製しました(彼のMachine
オブジェクトは私のMyInfo
のような単純なPOCOだと推測します)、同じ "can not serialize"例外が発生しました。
"text/xml"でハードコーディングするのではなく、XmlMediaTypeFormatter.DefaultMediaType.MediaType(「application/xml」 - 「より良い」メディアタイプのいずれかです)を使用して終了しました。私はこれをやり直すことを避け、いくつかの正常なデフォルトを取り戻すことができるかどうかを知りたいと思っています。 – ckittel