我知道可以使用TlMVC根据使用UrlHelper()的特定操作生成URL。请参阅SO和here。但是,由于ABP要求,我最终需要在 Application_Start()期间执行此操作。
所以在Application_Start()中实际上我有:
//Areas
AreaRegistration.RegisterAllAreas();
//Routes
RouteConfig.RegisterRoutes(RouteTable.Routes);
//Get the URL
var urlHelper = new UrlHelper();
var url = urlHelper.ActionAbsolute(MVC.Home.Index())
然而,这会引发以下例外情况:
'UrlHelper.ActionAbsolute(MVC.Home.Index())' threw an exception of type 'System.NullReferenceException'
Data: {System.Collections.ListDictionaryInternal}
HResult: -2147467261
HelpLink: null
InnerException: null
Message: "Object reference not set to an instance of an object."
Source: "T4MVCExtensions"
StackTrace: " at System.Web.Mvc.T4Extensions.ActionAbsolute(UrlHelper urlHelper, ActionResult result)"
TargetSite: {System.String ActionAbsolute(System.Web.Mvc.UrlHelper, System.Web.Mvc.ActionResult)}
但是,如果我检查事物的内容(在运行时),它们似乎都被填充:
MVC.Home.Index()
{T4MVC_System_Web_Mvc_ActionResult}
Action: "Index"
Controller: "Home"
Protocol: null
RouteValueDictionary: {System.Web.Routing.RouteValueDictionary}
MVC.Home.Index()。GetRouteValueDictionary()
{System.Web.Routing.RouteValueDictionary}
Count: 3
Keys: Count = 3
Values: Count = 3
Results View: Expanding the Results View will enumerate the IEnumerable
所以任何人都可以解释为什么会爆炸?或者换一种方式如何在Application_Start()中使用T4MVC获取动作的绝对URL?
答案 0 :(得分:0)
您提供的链接之间的共同主题是这些调用是在一个操作中进行的,这意味着请求已经实现。意味着上下文已经存在。在启动时,还没有任何请求。这就是你收到错误的原因。