3

C#.NET Web アプリによって呼び出されている DLL 内から、Web アプリのベース URL を見つけるにはどうすればよいでしょうか?

4

5 に答える 5

12

これは機能しますか?

HttpContext.Current.Request.Url

アップデート:

ベース URL を取得するには、次を使用できます。

HttpContext.Current.Request.Url.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped)
于 2008-10-13T01:22:50.437 に答える
1

Alexanderが言うように、HttpContext.Current.Request.Urlを使用できますが、http://を使用したくない場合は:

HttpContext.Current.Request.Url.GetComponents(UriComponents.HostAndPort, UriFormat.Unescaped);
于 2008-11-19T22:29:33.200 に答える
1

Web 以外のプロジェクトから参照される可能性のあるアセンブリである場合は、System.Web 名前空間の使用を避けることができます。

ダニースマーフの方法を使用します。

于 2008-10-13T16:10:40.723 に答える
0

Assembly.GetExecutingAssembly() を使用して、DLL のアセンブリ オブジェクトを取得できます。

次に、Server.MapPath を呼び出し、そのアセンブリの FullPath を渡してローカルのルート パスを取得します。

于 2008-10-13T00:41:40.940 に答える
0

これが最善の解決策かどうかはわかりませんが、私はこれを思いつきました:

string _baseUrl = String.Empty;
HttpContext httpContext = HttpContext.Current;
if (httpContext != null)
{
    _baseURL = "http://" + HttpContext.Current.Request.Url.Host;
    if (!HttpContext.Current.Request.Url.IsDefaultPort)
    {
        _baseURL += ":" + HttpContext.Current.Request.Url.Port;
    }
}
于 2008-10-13T01:35:03.890 に答える