我有asp.net mvc应用程序。我使用以下代码在控制器中获取基URI。
var baseApplicationUrl = string.Format("{0}://{1}", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Authority);
这工作正常。
有没有办法在Application_Start()中构建baseuri?
在应用程序启动方法HttpContext.Current.Request
将抛出异常
更新1
我有一个UISettings
类,它包含一些链接。这些链接的基URI将根据应用程序的托管方式而有所不同。例如,它可以是http://www.example.com/home/index
或https://www.example.com/home/index
或http://www.example.com/subdomain/home/index
。所以home/index
有不同的基础uri取决于它的托管方式。
我了解申请开始时申请不可用。但是我想在应用程序启动时加载UISettings,这样我就可以在DI框架中注册为单例实例。
public class UISettings
{
public string Link1 {get;set;}
public string Link2 {get;set;}
public static UiSettings Load()
{
// need to get baseURI here???
var settings = new UISettings();
settings.Link1 = baseURI + "/home/index";
return settings;
}
}
然后在应用程序启动时将DI框架注册为singleton,这样我就可以在后面的任何类中注入它
container.RegisterInstance<UISettings>(UiSettings.Load());
答案 0 :(得分:0)
我不确定你要在这里完成什么。在Application_Start()阶段还没有构建Request,所以我认为从Current Request获取URI的最早时间是在Aplication_BeginRequest()中,之后它是你的起始页面,可以在WebConfig文件中分配和使用。