Asp.net

ASP.NET Core 中 Server.Transfer 的替代方案

  • September 10, 2021

我正在將 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 存在和性能改進的原因。這對遷移不利,但對整個平台有利。

引用自:https://stackoverflow.com/questions/39693050