public async static Task<WebResponse> GetResponseAsync(this HttpWebRequest request, Dictionary<string, object> post)
{
var tcs = new TaskCompletionSource<WebResponse>();
try
{
request.BeginGetRequestStream((arReq) =>
{
var stream = request.EndGetRequestStream(arReq);//throw NotSupportedException
writeMultipartObject(stream, post);
stream.Close();
request.BeginGetResponse((ar) =>
{
var response = request.EndGetResponse(ar);
tcs.SetResult(response);
}, null);
}, null);
}
catch (Exception we)
{
tcs.SetException(we);
}
return await tcs.Task;
}
当我发布某些内容时,它无效。=。= var stream = request.EndGetRequestStream(arReq); //抛出NotSupportedException 告诉我为什么?在ToT .................
System.NotSupportedException ---&gt; System.NotSupportedException:不支持指定的方法。 在System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) 在System.Net.Browser.ClientHttpWebRequest。&lt;&gt; c_ DisplayClasse.b _d(Object sendState) 在System.Net.Browser.AsyncHelper。&lt;&gt; c_ DisplayClass1.b _0(Object sendState)
答案 0 :(得分:3)
我遇到了类似的行为(仅限Windows Phone)并通过显式处理您正在编写的流来实现它。 所以尝试添加
stream.Flush();
之前,和 stream.Dispose();
之后
stream.Close();
声明并查看是否有帮助。
显然,.Net中网络堆栈的行为因代码所运行的平台而异,因为.Net框架是针对每个平台“重新开发”的。
我希望这会有所帮助。
干杯, 克里斯托弗。