0

コードは非常に単純です。

var http = new HttpClient();
var uri = new Uri(Application.Current.Host.Source, "/api/query");
var postContext = new StringContent("test");
var response = await http.PostAsync(uri, postContext);

エラーは次のとおりです:オブジェクトのヌル参照

at System.Net.Http.DelegatingStream.get_CanSeek()
at System.Net.Http.StreamContent..ctor(Stream content, Int32 bufferSize)
at System.Net.Http.StreamContent..ctor(Stream content)
at System.Net.Http.HttpClientHandler.CreateResponseMessage(HttpWebResponse webResponse, HttpRequestMessage request)
at System.Net.Http.HttpClientHandler.TryGetExceptionResponse(WebException webException, HttpRequestMessage requestMessage, HttpResponseMessage& httpResponseMessage)
at System.Net.Http.HttpClientHandler.HandleAsyncException(RequestState state, Exception e)
at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar)
at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass19.<InvokeGetResponseCallback>b__17(Object state2)
at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

GetAsync は非常にうまく機能します。しかし PostAsync はクラッシュします。

4

1 に答える 1

0

これは、要求が失敗したときの HttpWebRequest の Silverlight ブラウザー実装のバグです (スタック内の HandleAsyncException に注意してください)。Microsoft.Net.Http の新しいバージョンに回避策があり、まもなくリリースされる予定です。

今のところ、null ストリームを返さない SL のクライアント スタックを使用してみてください。 http://msdn.microsoft.com/en-us/library/dd920295(v=VS.95).aspx

于 2013-04-25T02:26:50.860 に答える