2025年7月7日 星期一

[研究]Visual Studio 2019 在 Web.Config 設定 sameSite 會出現 "不允許 'sameSite' 屬性"

[研究]Visual Studio 2019 在 Web.Config 設定 sameSite 會出現 "不允許 'sameSite' 屬性"

2025-07-07

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

Visual Studio 2019 在 Web.Config 設定 sameSite 會出現 "不允許 'sameSite' 屬性"

ChatGPT 說:

這是 Visual Studio 2019 的常見情況,原因與 .NET Framework 版本 和 Web.Config Schema 檢查 有關,以下詳細說明與解法:

【為什麼出現「不允許 'sameSite' 屬性」】

  1. Web.Config 編輯器語法提示 (IntelliSense) 版本滯後:
    • Visual Studio 2019 內建的 Web.Config 編輯器使用的 Schema 定義(XSD 檔)來自於特定 .NET Framework 版本。
    • 即使實際執行環境已經支援 sameSite,但 Schema 沒有更新,編輯器仍會標紅或顯示不允許。
  2. 實際執行不影響:
    • 如果你的專案目標框架(Target Framework)是 .NET Framework 4.7.2、4.8 以上,且 IIS/ASP.NET 執行環境更新到支援 SameSite,設定會正常運作,僅編輯器報警告。

常見 SameSite 設定方式

<system.web>
  <httpCookies sameSite="None" requireSSL="true" />
</system.web>

注意:

  • sameSite 可設為 Lax、Strict、None
  • requireSSL="true" 搭配 sameSite="None" 是標準需求,否則瀏覽器會忽略此 Cookie。


【解決方法與建議】

✅ 確認實際執行環境是否正常:

  • 即使 VS2019 編輯器報錯,只要網站實際執行,Cookie 的 SameSite 屬性有正確生效即可。

✅ 更新 Visual Studio 與 .NET Framework 開發包:

✅ 忽略編輯器提示:

  • 編輯器 Schema 有時不會即時更新,若部署與執行均正常,可忽略設計時警告。

✅ 手動修改 XSD(不建議):

  • 可以修改 VS 內部的 dotNetConfig.xsd,讓編輯器認識 sameSite,但需小心,VS 更新時會被覆蓋。

【其他補充】

若你想完全靠程式碼控制 SameSite,可透過 Global.asax:

protected void Application_PreSendRequestHeaders()
{
    HttpCookie cookie = Response.Cookies["YourCookieName"];
    if (cookie != null)
    {
        cookie.SameSite = SameSiteMode.None;
        cookie.Secure = true;
    }
}


總結

  • VS2019 出現「不允許 'sameSite' 屬性」是編輯器 Schema 未更新的問題。
  • 實際執行環境若是 .NET 4.7.2 或 4.8,且瀏覽器檢查 SameSite 屬性正常,則無需擔心。
  • 可透過更新 VS 與 .NET Framework 或忽略設計時提示解決。

註:Web.Config 和 Global.asax 的設定可以共存

(完)

相關

沒有留言:

張貼留言