我面临以下问题
我的解决方案是像这样使用 MVVM 设置的。
- UWP 应用 -> 查看
- 针对 Windows Universal 和 .NET Framework 4.6 -> ViewModel 的 PCL
- 面向 Windows Universal 和 .NET Framework 4.6 的 PCL -> 模型
在查看项目中,我有一项使用Windows.Web.Http.HttpClient
. 该服务被注入到几个 ViewModel 中。
在视图模型中,我有一个这样的 try catch 块。
try
{
await webClientService.MakeACallAsync();
}
catch (System.Runtime.InteropServices.COMException e)
{
//web exceptions such as 404, 401, 500 etc
// code handling exceptions.
}
MakeACallAsync 就是这个函数,但问题不仅限于这个调用,它也发生在其他类似的调用中。
public async Task<string> MakeACallAsync(string username, string password)
{
var usernamepassword = $"{username}:{password}";
var bytes = Encoding.UTF8.GetBytes(usernamepassword);
var base64 = Convert.ToBase64String(bytes);
httpClient.DefaultRequestHeaders.Authorization = new HttpCredentialsHeaderValue("Basic", base64);
return await httpClient.GetStringAsync( a uri here );
}
现在,如果服务由于 404、500 等响应而引发任何异常,我会捕获这些异常并处理它们。
这在 Debug 中运行良好,但在 Release 中,异常不是System.Runtime.InteropServices.COMException
以System.Exception
.
有谁知道为什么会这样??