【问题标题】:How to remove WebDAV module in WebAPI core?如何删除 WebAPI 核心中的 WebDAV 模块?
【发布时间】:2020-01-24 04:27:18
【问题描述】:

我使用 .Net Core 2.2 创建了一个简单的 WebAPI。当我使用 POSTMAN 使用 PUT HttpVerb 来点击操作方法时,我得到了 405 - 方法不允许 信息。当我在线检查时,建议是从 Web.config 中删除 WebDAV 模块。但是在.Net Core WebAPI中,配置有launchSettings.json和appsettings.json。

请帮助我了解如何在上述任一配置文件中设置设置以删除 WebDAV 模块。

我是 .Net Core 的新手。

我尝试创建 Web.Config 并使用以下代码删除 WebDAV 模块,但没有成功

<system.webServer>
  <modules runAllManagedModulesForAllRequests="false">
    <remove name="WebDAVModule" />
  </modules>
</system.webServer>

我没有使用 .Net Core 的 WebAPI。来自 POSTMAN 的请求预计会命中 PUT 方法。

请帮忙。

如何将此设置转换为 appSettings.json 的 JSON 格式

【问题讨论】:

  • 您是否在 IIS 上托管应用程序?试试thisthis
  • 谢谢南宇。我使用 IIS express 在本地运行 Web API。我使用 POSTMAN 来测试本地运行的 Web API。请在这种情况下提供帮助。
  • 给你看相关代码,我记得iis express默认支持put动词
  • @NanYu 这里是代码// PUT: api/Employee/5 [HttpPut("{id}")] public Employee Put(int id, [FromBody] Employee employee) { var empList = GetStdEmployeeList(); empList.Where(iter =&gt; iter.Id == id).FirstOrDefault().Name = employee.Name; empList.Where(iter =&gt; iter.Id == id).FirstOrDefault().Salary = employee.Salary; return empList.Where(iter =&gt; iter.Id == id).FirstOrDefault(); }
  • 你也需要 Startup.cs 代码吗?

标签: asp.net-core-webapi


【解决方案1】:

我们遇到了同样的问题; PUT 在 IIS Express 中启用,这是我们的测试环境,WebDAV 安装在禁用 PUT 和 DELETE 动词的生产环境中。这导致生产服务器上出现错误:405 HTTP verb used to access this page is not allowed

这可以通过将web.config 配置文件添加到禁用WebDAV 的项目中来解决——不要尝试将其添加到app.settings JSON 文件中。

web.config 文件如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="false">
      <remove name="WebDAVModule" />
    </modules>
  </system.webServer>
</configuration>

【讨论】:

    猜你喜欢
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多