簡體   English   中英

UseStaticFiles中的RequestPath和波浪號字符

[英]RequestPath in UseStaticFiles and the tilde character

使用后

app.UseStaticFiles(requestPath: "/static")

,生成的路徑

<link rel="stylesheet" href="~/css/global.css"/>

<link rel="stylesheet" href="/css/global.css"/>

而不是預期的

<link rel="stylesheet" href="/static/css/global.css"/>

波浪號字符的路徑生成邏輯如何更新為使用requestPath

代字號用於引用應用程序根目錄。 例如,如果將應用程序配置為具有其他路徑庫(使用UsePathBase() ),那么當您使用使用代字號的動態路徑時,該路徑庫將考慮傳入的請求。

但是,該字符不是訪問靜態文件根目錄的快捷方式。 使用使用代字號的應用程序相對路徑來到達非靜態路徑是完全有效的,例如,如果您有其他一些可以回答請求的中間件。

從概念上講,由於多種原因,波浪號也無法自動選擇靜態文件的位置:

  • 當您執行app.UseStaticFiles(requestPath: …) ,該路徑僅本地存儲在靜態文件中間件中。 有關該根的信息無法到達外部。
  • 從技術上講,通過使用不同的配置多次調用UseStaticFiles() ,您可以完全使用多個靜態文件中間件。 這樣,將無法正確知道您要指代哪個靜態文件根。

我通常建議您將靜態文件中間件保留為默認值。 這樣,像favicon.ico這樣的靜態文件都可以從根目錄獲得好處,但仍可以正確提供它們。 如果您希望文件位於子路徑中,請考慮只在wwwroot創建一個子文件夾。 這樣,在Razor視圖中使用波浪號時,您還將獲得正確的IntelliSense。

暫無
暫無

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

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