我正在使用HttpClient
执行基本的POST请求。每次发出请求时,都会抛出UnauthorizedAccessException
消息
无法访问MemoryStream的内部缓冲区。
我尝试使用没有任何参数的GET请求而且工作正常,这让我相信它可能是我生成要发送的参数的过程。此外,当从try / catch块中调用PostAsync()方法时,catch块永远不会捕获该异常,而是继续请求。我之前从未遇到像这样的POST请求的问题。
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://theurl.com/");
List<KeyValuePair<String, String>> parameters = claim.RequestParameters();
var content = new FormUrlEncodedContent(parameters);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
HttpResponseMessage response = new HttpResponseMessage();
try
{
response = await client.PostAsync(url, content); // Exception generated here
}
catch (System.UnauthorizedAccessException e)
{
// This catch statement is never entered
Debug.WriteLine(e.Message);
}
if (response.IsSuccessStatusCode) // ...
}
我正在为Windows 10开发(我使用的是Windows 10 build 10162),x86和x64版本都会抛出异常。
更新1:
我从documentation注意到MemoryStream(byte[])
构造函数会抛出UnauthorizedAccessException
。
应该使用此构造函数不公开基础流。 GetBuffer抛出UnauthorizedAccessException。
MemoryStream(byte[], Int32, Int32, Boolean, Boolean)
。
PostAsync()
方法是否可能在内部调用MemoryStream(byte[])
构造函数而不是MemoryStream(byte[], Int32, Int32, Boolean, Boolean)
构造函数,这是导致问题的原因吗?
更新2:
我还尝试使用this SO post中的最小示例,其中代码的海报知道它可以在他的机器上运行。它不在我的工作。我仍然有如上所述抛出的异常。