簡體   English   中英

如何在 .NET 5.0 中從 IIS 中刪除 WebDav?

[英]How to remove WebDav from IIS, in .NET 5.0?

我們有一個 Web API Web 服務站點,內置於 .NET 4.5.2,我們正在嘗試遷移到 Z3203CB0EF9EDB9087.

我們遇到了一個似乎很常見的問題——當我們將站點部署到我們的登台環境時,PUT 和 DELETE 方法都不起作用。 當我們使用生成的 Swagger UI 測試它們時,我們得到 500 個錯誤。

注意 - 我們沒有通過 VS2019 調試器在 IIS Express 中看到這些錯誤。

我們瀏覽web,當然是找到答案了:

如何在運行 REST PUT 或 DELETE 請求時修復 500 服務器錯誤?

所以我們創建了一個 web.config:

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

這會導致不同的問題。

  1. 當我們嘗試通過 VS2019 調試器在 IIS Express 中運行站點時,我們得到 HTTP 500 錯誤,並且
  2. 運行該站點會修改 web.config。

web.config 現在看起來像:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <remove name="WebDAV" />
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>
    <modules>
      <remove name="WebDAVModule" />
    </modules>
    <aspNetCore stdoutLogEnabled="false" hostingModel="InProcess" />
  </system.webServer>
</configuration>

注意添加了 aspNetCore。

所以,事情就是這樣。

  • 我們需要它在部署到 IIS以及在本地運行時都能正常工作,並且
  • 在構建過程中,我們不能有部分生成的源文件。 我們的整個構建和版本控制系統是建立在這樣的想法之上的:有些文件包含開發人員編寫的代碼,有些文件是在構建過程中生成的。 前者我們保存版本控制,后者我們不保存。 我們可以將 web.config 添加到我們的版本控制中,但如果這樣做,我們將無法在構建或運行期間更改其內容。

那么我們該怎么辦?

當部署在 IIS 中以及在調試時在 IIS Express 中運行時,我們如何使其工作?

我們如何處理在調試運行期間修改的 web.config?

這類問題的出現似乎有很多原因,我不能假裝找到了所有這些問題的答案。

在這種特殊情況下,問題在於 VS 在 web.config 中插入了錯誤的元素。

添加 <handlers/> 和 <modules/> 元素以刪除 WebDAV 導致 VS 插入 <aspNetCore/> 元素:

<aspNetCore stdoutLogEnabled="false" hostingModel="InProcess" />

並且插入的元素缺少必需的 processPath= 屬性。

<aspNetCore processPath="dotnet" stdoutLogEnabled="false" hostingModel="InProcess" />

最好關閉 WebDAV Publishing。 為此:打開“打開或關閉 Windows 功能”。 現在在 Internet Information Services\World Wide Web Services\Common HTTP Features\WebDAV Publishing 中。 取消選中它並單擊確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM