我有一個ASP.NET 5 MVC 6 Web API項目。大多數API端點都具有[Authorize]屬性,並且在IIS中以及Visual Studio中項目的屬性中都啓用了Windows身份驗證。這一切都可以在beta 7中正常工作。ASP.NET 5 beta 8中的Windows身份驗證支持
但是,在測試版8中,這不起作用。通過一個完全乾淨的項目很容易重現:
- 使用ASP.NET 5 Web API模板創建一個新項目。
- 獲取項目屬性(而不是解決方案),轉到調試選項卡,啓用Windows身份驗證並禁用匿名。保存更改。
- 命中F5並讓它嘗試運行該項目。
結果:
出現了一個錯誤,以確定託管應用程序的DNX進程的進程ID。
- 現在回到項目屬性並啓用匿名。保持Windows啓用。保存更改。
- 轉到您的控制器並添加[授權]屬性。
- F5。
結果:
該項目啓動這段時間,但Web API返回的輸出窗口500通知:
Microsoft.AspNet.Mvc.Controllers.ControllerActionInvoker:警告:過濾器「Microsoft.AspNet.Mvc.Filters.AuthorizeFilter」的請求授權失敗。
該項目在發佈到IIS時也不起作用。
正如測試版8 announcement所述,主機模型已更改,IIS現在將請求傳遞給Kestrel。 Servers page沒有給出任何跡象表明Kestrel支持Windows身份驗證。在測試版8中使用Windows身份驗證工作有一些技巧嗎?
這似乎是現在最好的答案,因爲它允許Windows身份驗證實際工作。謝謝! – Bill
沒有問題@Bill - 我需要它能夠在修復工具錯誤時繼續工作,不想因爲這個原因而將我們的代碼移回beta 7! –
@Bill我剛剛更新了答案,稍微使用一個單獨的命令,因爲今天早上,我看到Visual Studio再次進入並將我的「web」命令改回到Kestrel ......這有點急於設置背部! –