我的 Entity Framework Core API 在本地运行良好,但在生产环境中出现 405 错误
My Entity Framework Core API works fine locally, but fails with a 405 error in production
我有一个使用 Entity Framework.
的 .NetCore 3.1 API 项目
当我从 Visual Studio 本地 运行 它时,它工作得很好。
但是,在发布到生产 IIS 8.5 服务器后,当我尝试点击在生产服务器上使用 PUT 的 API 时出现以下错误。
xhr.js:178 PUT https://nationalparks.xyz.gov/api/plants/91 405 (Method
Not Allowed)
我的控制器是这样开始的:
[HttpPut("{id}")]
public async Task<IActionResult> PutPlant(long id, [FromBody] Plant plant)
{
...
}
客户端看起来像这样:
await axios({
method: "PUT",
url: "api/plants/" + plant.id,
data: JSON.stringify(plant),
headers: { 'Content-Type': 'application/json; charset=utf-8' }
});
老实说,我很困惑...我不确定为什么要这样做。
我看到一些帖子说要修改 web.config,但我的应用程序使用 appsettings.json,而不是 web.config。
有什么想法吗?
谢谢!
在 IIS 下 运行ning 时,dotnet 核心应用程序确实使用 web.config
。您会注意到 publish
命令生成了一个 web.config
文件,该文件告诉 IIS 将哪个 DLL 运行 用于您的应用程序。
我想我前段时间也遇到过同样的问题。我通过向 web.config
添加行来删除 WebDAV 模块来修复它。有关详细信息,请参阅此答案:
问题背后的原因是 WebDAV 模块拦截了请求。要解决此问题,您可以按照以下解决方法进行操作。
1) 从您的系统中删除 WebDAV:
打开控制面板->“打开或关闭 Windows 功能”->取消勾选 WebDAV 发布复选框。
或
2) 在您的 web.config 文件中添加以下代码:
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webServer>
请记住,完成这些更改后,您就可以在 iis 中使用 WebDAV 模块了。
我有一个使用 Entity Framework.
的 .NetCore 3.1 API 项目当我从 Visual Studio 本地 运行 它时,它工作得很好。
但是,在发布到生产 IIS 8.5 服务器后,当我尝试点击在生产服务器上使用 PUT 的 API 时出现以下错误。
xhr.js:178 PUT https://nationalparks.xyz.gov/api/plants/91 405 (Method Not Allowed)
我的控制器是这样开始的:
[HttpPut("{id}")]
public async Task<IActionResult> PutPlant(long id, [FromBody] Plant plant)
{
...
}
客户端看起来像这样:
await axios({
method: "PUT",
url: "api/plants/" + plant.id,
data: JSON.stringify(plant),
headers: { 'Content-Type': 'application/json; charset=utf-8' }
});
老实说,我很困惑...我不确定为什么要这样做。
我看到一些帖子说要修改 web.config,但我的应用程序使用 appsettings.json,而不是 web.config。
有什么想法吗?
谢谢!
在 IIS 下 运行ning 时,dotnet 核心应用程序确实使用 web.config
。您会注意到 publish
命令生成了一个 web.config
文件,该文件告诉 IIS 将哪个 DLL 运行 用于您的应用程序。
我想我前段时间也遇到过同样的问题。我通过向 web.config
添加行来删除 WebDAV 模块来修复它。有关详细信息,请参阅此答案:
问题背后的原因是 WebDAV 模块拦截了请求。要解决此问题,您可以按照以下解决方法进行操作。
1) 从您的系统中删除 WebDAV:
打开控制面板->“打开或关闭 Windows 功能”->取消勾选 WebDAV 发布复选框。
或
2) 在您的 web.config 文件中添加以下代码:
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
</system.webServer>
请记住,完成这些更改后,您就可以在 iis 中使用 WebDAV 模块了。