2017-06-02 6 views
0

私はasp.net mvcアプリケーションを持っています。私はコントローラ内でベースURIを取得するために次のコードを使用していました。アプリケーションの開始時にサイトのベースURLを取得するにはどうすればよいですか?

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; 
    } 
} 

とアプリケーションのシングルトンはそう始める私は私はあなたがここで達成しようとしているのかわからないんだけど

container.RegisterInstance<UISettings>(UiSettings.Load()); 
+0

http://mvolo.com/iis7-integrated-mode-request-is-not-available-in-this-context-exception-in-applicationstart/を参照してください。 – RandomUs1r

答えて

0

後者の任意のクラスでそれを注入することができるよう、次にDIフレームワークに登録します。 Application_Start()ステージでリクエストがまだ構築されていないので、Current RequestからURIを取得できる最も早い時期がAplication_BeginRequest()にあります。それ以前は、WebConfigファイルに割り当てて使用できる開始ページです。

関連する問題