Уже пытались найти SO для подобных проблем, но они не помогли решить.
Сценарий:
Иметь приложение веб-клиента, которое имеет приложение веб-API в качестве бэкэнда.Нет проблем при вызове того же URI, если он от этого клиента - веб-API, но исключение происходит, когда я пытаюсь инициировать запрос API из другого приложения служб WebAPI (скажем, это отдельный проект для доступа к отчетам, которые выполняются как службаиспользуя Telerik Reporting).
Код:
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;
}
Исключение:
Не удается отправить тело содержимого с этим типом глагола.
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()
Это прекрасно работает, когда я получаю к нему доступ из приложения клиента (asp.net mvc), и возникает проблема, когда я вызываю это из приложения API служб отчетов.Это как-то связано с этим.
Редактировать:
Проект веб-клиента - asp.net mvc core 2.1, поэтому я думаю, что он работает при использовании содержимого в методе GET HttpClient.SendAsync, но в приложении служб отчетов, где возникает эта проблемаявляются целями .net 461.
Я сильно сомневаюсь, что это может быть причиной, поскольку .net framework не допускает содержимое для операций GET?Любая работа вокруг? Ссылка
TIA