Как вы находите базовый URL из DLL в C #? - PullRequest
3 голосов
/ 13 октября 2008

Как найти базовый URL-адрес веб-приложения в библиотеке DLL, которая вызывается веб-приложением C # .NET?

Ответы [ 5 ]

12 голосов
/ 13 октября 2008

Будет ли это работать?

HttpContext.Current.Request.Url

UPDATE:

Чтобы получить базовый URL, вы можете использовать:

HttpContext.Current.Request.Url.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped)
1 голос
/ 20 ноября 2008

Как говорит Александр, вы можете использовать HttpContext.Current.Request.Url, но если вы не хотите использовать http://:

HttpContext.Current.Request.Url.GetComponents(UriComponents.HostAndPort, UriFormat.Unescaped);
1 голос
/ 13 октября 2008

Если это сборка, на которую могут ссылаться не-веб-проекты, вы можете не использовать пространство имен System.Web.

Я бы использовал метод DannySmurf.

0 голосов
/ 13 октября 2008

Я придумал это, хотя я не уверен, что это лучшее решение:

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;
    }
}
0 голосов
/ 13 октября 2008

Вы можете использовать Assembly.GetExecutingAssembly (), чтобы получить объект сборки для DLL.

Затем вызовите Server.MapPath, передав FullPath этой сборки, чтобы получить локальный корневой путь.

...