Asp.net web api 异常-“无法使用httpclient.sendasync发送此谓词类型的内容正文”
已经尝试过搜索类似的问题,但这些问题无助于解决 脚本: 拥有一个Web客户端应用程序,该应用程序将Web API应用程序作为后端。如果从这个客户端调用同一个URI——Web API,则没有问题,但是当我试图从另一个WebAPI服务应用程序触发API请求时,会发生异常,比如说,这是一个单独的项目,用于访问使用Telerik Reporting作为服务运行的报告 代码:Asp.net web api 异常-“无法使用httpclient.sendasync发送此谓词类型的内容正文”,asp.net-web-api,asp.net-core-mvc,dotnet-httpclient,Asp.net Web Api,Asp.net Core Mvc,Dotnet Httpclient,已经尝试过搜索类似的问题,但这些问题无助于解决 脚本: 拥有一个Web客户端应用程序,该应用程序将Web API应用程序作为后端。如果从这个客户端调用同一个URI——Web API,则没有问题,但是当我试图从另一个WebAPI服务应用程序触发API请求时,会发生异常,比如说,这是一个单独的项目,用于访问使用Telerik Reporting作为服务运行的报告 代码: private async Task<HttpStatusCode> AccessService()
private async Task<HttpStatusCode> AccessService()
{
HttpResponseMessage response = null;
try
{
using (HttpRequestMessage request = new HttpRequestMessage()
{
Content = new System.Net.Http.StringContent(JSONValues, System.Text.Encoding.UTF8, "application/json"),
RequestUri = new Uri(UriString),
Method = CallMethod
})
{
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", Utils.Token) ;
response = await httpClient.SendAsync(request);
if (response.IsSuccessStatusCode)
{
string httpResponse = await response.Content.ReadAsStringAsync();
httpString = JsonConvert.DeserializeObject<string[]>(httpResponse);
}
ErrorCode = response.StatusCode;
response.Dispose();
}
}
catch (Exception ex)
{
Misc.Error= ex.Message;
}
finally
{
response.Dispose();
}
return ErrorCode;
}
例外情况:
无法发送具有此谓词类型的内容正文
当我从客户端应用程序asp.net mvc访问同一个应用程序时,这可以正常工作,当我从Report Services API应用程序调用它时,就会出现问题。这是有关系的
编辑:
Web客户端项目是asp.net mvc core 2.1,因此我认为它在使用HttpClient.SendAsync的GET方法中的内容时可以工作,但出现此问题的Reports Services应用程序是targets.net 461
我强烈怀疑这可能是原因,因为.net framework不允许内容用于GET操作?有什么解决办法吗?
TIA根据提供的描述,如果使用get方法,get请求中通常没有正文。有关更多详细信息,请参阅以下解决方案:
谢谢,但已经检查过了。。。我已经有一个请求体sendWhen失败CallMethod的值是多少?@ToddMenier CallMethod是GET
at System.Net.HttpWebRequest.CheckProtocol(Boolean onRequestStream)
at System.Net.HttpWebRequest.BeginGetRequestStream(AsyncCallback callback, Object state)
at System.Net.Http.HttpClientHandler.StartGettingRequestStream(RequestState state)
at System.Net.Http.HttpClientHandler.PrepareAndStartContentUpload(RequestState state)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Net.Http.HttpClient.<FinishSendAsyncBuffered>d__58.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()