[英]Detect requstURI dynamically + ASP.NET Core
我正在使用web.config使用.Net Core設置一些重新定義規則。
<rule name="About Page" stopProcessing="true">
<match url="about.aspx" />
<action type="Redirect" url="/Home/About" redirectType="Permanent" />
</rule>
...
因此,如果用戶輸入www.test.com/about.aspx ,它將重定向到www.test.com/Home/About頁面。
我的問題是如何將用戶在URL中輸入的內容傳遞給控制器方法? 例如,在這種情況下, www.test.com / about.aspx ?
我嘗試過
var currentURI = new Uri($"{Request.Scheme}://{Request.Host}{Request.Path}{Request.QueryString}");
但是該用戶檢測到重定向的uri(www.test.com/Home/About),而不是最初輸入的URL(www.test.com/about.aspx)
我在HomeController
, IActionResult
About
方法中使用以下代碼。
using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Head, uri))
HttpRequestMessage
的requestUri
參數目前不是動態的,因此它無法檢測到用戶在URL中輸入的內容。
感謝幫助。
為了更加清楚,讓我們描述HTTP請求的流程:
http://www.test.com/about.aspx
http://www.test.com/Home/About
。 http://www.test.com/Home/About
。 第二個請求不包含對原始URL http://www.test.com/about.aspx
任何引用。 這就是為什么您無法在服務器端獲取原始url的原因。
如果您的應用程序邏輯需要有關初始URL的信息,那么我在這里看到兩個選項:
您可以將原始url作為參數添加到重定向的url中,例如: http://www.test.com/Home/About?orig_url=http://www.test.com/about.aspx
: http://www.test.com/Home/About?orig_url=http://www.test.com/about.aspx
: http://www.test.com/Home/About?orig_url=http://www.test.com/about.aspx
您必須使用新模板更新重定向規則,並在ASP.Net Core應用程序中調整路由。
您可以使用路由而不是重定向。 在這種情況下,不會發生301重定向,服務器將使用用戶鍵入的url處理初始請求,但是兩個URL都將調用相同的Controller動作。
選擇更適合您的方法。 希望這會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.