Asp.net
ASP.NET Core 中 Server.Transfer 的替代方案
我正在將 ASP.NET 應用程序遷移到 ASP.NET Core,他們對
HttpServerUtility.Transfer(string path). 但是,HttpServerUtility在 ASP.NET Core 中不存在。有沒有我可以使用的替代方案?或者是
Response.Redirect我唯一的選擇?我想盡可能地保持與舊應用程序相同的行為,因為Server.Transfer 和 Response.Redirect之間存在差異。
根據您的情況,我為您看到了一些選項:
- 返回另一個視圖:所以只是 HTML。見 Muqeet Khan 的回答
- 返回同一控制器的另一個方法:這也允許執行另一個操作的業務邏輯。只寫類似的東西
return MyOtherAction("foo", "bar")。- 返回另一個控制器的操作:請參閱 Ron C 的答案。我對這個解決方案有點麻煩,因為它省略了包含 ASP.NET Core 90% 邏輯的整個中間件(如安全、cookie、壓縮、 …)。
- 路由樣式中間件:添加類似於路由的中間件。在這種情況下,您的決策邏輯需要在那裡進行評估。
- 中間件堆棧的後期重新執行:您基本上需要重新執行堆棧的很大一部分。我相信這是可能的,但還沒有看到解決方案。我看過 Damian Edwards(ASP.NET Core 的 PM)的展示文稿,他在其中託管 ASP.NET Core,而沒有使用 Kestrel/TCPIP,只是為了在瀏覽器中本地呈現 HTML。你能做到的。但這是很多超載。
一個忠告:轉移已經死了;)。像這樣的差異是 ASP.NET Core 存在和性能改進的原因。這對遷移不利,但對整個平台有利。