*从 Blazor 应用程序调用 Asp.NET Core 3.1 Web api 时出现以下异常。 但是相同的代码在 Visual Studio 调试中效果很好
响应状态代码不表示成功:405(方法不允许)。 在 System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() 在 Microsoft.AspNetCore.Components.HttpClientJsonExtensions.SendJsonAsync[T](HttpClient httpClient, HttpMethod method, String requestUri, Object content)*
//UI Code
public async Task<bool> UpdateCOAValue(COALookUps dataItem)
{
bool result = false;
try
{
bool response = await _httpClient.SendJsonAsync<bool>(HttpMethod.Put,
String.Format(@_webApi.WebAPIUrl, "update"), dataItem);
result = await Task.FromResult(response);
}
catch (Exception ex)
{
Log.Error("Error: {0}", ex);
}
return result;
}
//Web API Controller Method
[HttpPut("update")]
public bool UpdateCOAEntry([FromBody]COALookups value)
{
try
{
List<SqlParameter> lstSQLParams = new List<SqlParameter>();
SqlParameter paramCOALookUpID = new SqlParameter();
//other codes
dbManager.Update("UpdateCOALookUp", CommandType.StoredProcedure, lstSQLParams.ToArray());
}
catch (Exception ex)
{
Log.Error("Error: {0}", ex);
return false;
}
return true;
}
//Web API Controllers syntax
[Route("api/[controller]")]
[ApiController]
public class COAController : ControllerBase
{}
答案 0 :(得分:0)
这对我有用。 (这是一种解决方法),每次发布后都必须重做。如果有人有更好的解决方案,请留言。
打开 WebDav 创作规则,然后选择禁用 WebDAV 选项 出现在右侧栏上。
选择模块,找到 WebDAV 模块并将其删除。
选择HandlerMapping,找到WebDAVHandler并删除。
答案 1 :(得分:0)
我发现此解决方案比更改 IIS 中的任何设置更有效 在 ConfigureServices 方法中添加以下内容
var handler = new HttpClientHandler()
{
UseDefaultCredentials = false,
Credentials = System.Net.CredentialCache.DefaultCredentials,
AllowAutoRedirect = true
};
services.AddSingleton(sp =>
new HttpClient(handler)
{
BaseAddress = new Uri(Configuration["WebAPI:BaseUrl"])
});