[英]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>
這會導致不同的問題。
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 中以及在調試時在 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.