尝试 Catch Async WebRequest Put

Try Catch Async WebRequest Put

我在将此编码为 try 和 catch 时遇到了一些问题...我已经在几个地方尝试了 try catch,例如编码之前、写入之前的等待内、刷新之前但没有好运...

var encoder = new ASCIIEncoding();
var data = encoder.GetBytes(limitBody);
req.ContentLength = data.Length;

    await req.GetRequestStreamAsync().ContinueWith(trs =>
    {
        trs.Result.Write(data, 0, data.Length);
        trs.Result.Flush();

        Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal, (Action)delegate
        {
            Methods.ReadStreamFromResponse(req.GetResponse(), requestUri, siteCode, correlationtoken, "PUT",
                    txtLimitsResponse, null, limitBody, _userId);
        });
   });

每当远程服务器 returns 出现错误:(400) 错误请求。

应用程序中断,如何捕获此错误并将其输出给用户?

非常感谢

您应该可以将 try/catch 放在 await 周围。它已经将该方法的其余部分注册为延续,因此您不需要 ContinueWith,如果您从 UI 线程调用它,则不需要 Dispatcher.Invoke 作为 await 存储当前的 SynchornizationContext 并在 await 之后恢复它。因此该方法的其余部分也会在 UI 线程上 运行。

var encoder = new ASCIIEncoding();
var data = encoder.GetBytes(limitBody);
req.ContentLength = data.Length;

try
{  
    var result = await req.GetRequestStreamAsync(); 
    result.Write(data, 0, data.Length);
    result.Flush();

    Methods.ReadStreamFromResponse(req.GetResponse(), requestUri, siteCode, correlationtoken, "PUT",
                    txtLimitsResponse, null, limitBody, _userId);      
}
catch(...)
{ 
   ....
}