由于控制器繼承于Controller:
public class HomeController : Controller
{
}
所以,在HomeController中可以使用HttpContext,但是,控制器的程式經常要new別的類,而別的類中也要使用到HttpContext物件中的一些功能
比如:
internal class myWorkClass(){
internal void myMothed() {
var s = HttpContext.Request.Path;
}
}
由于myWorkClass不繼承于Controller,所以是沒有HttpContext物件的。
當然,可以在HomeController呼叫時把HttpContext作為myMothed的引數或myWorkClass的構造引數傳過去。
但是。我的程式中,有很多類都需要使用到HttpContext中的內容(不單止Request.Path,還有Session等)
請問:有沒有比較方便的實作方法?
uj5u.com熱心網友回復:
你的設計有問題,現在一般在撰寫Asp.Net Core代碼的時候,控制器里邊基本不會new一個物件出來,而是通過Ioc容器注入;如果你的MyWorkClass是一個服務類,就應該通過Ioc容器注入進來,而且它不應該使用httpcontext
而如果你MyWorkClass是處理一些公共邏輯,你應該考慮使用Filter,或者考慮AOP;
uj5u.com熱心網友回復:
一般需要處理httpcontext的時候,還可以考慮中間件轉載請註明出處,本文鏈接:https://www.uj5u.com/net/283753.html
標籤:ASP.NET
下一篇:關于Task 的疑問
