Как найти базовый URL-адрес веб-приложения в библиотеке DLL, которая вызывается веб-приложением C # .NET?
Будет ли это работать?
HttpContext.Current.Request.Url
UPDATE:
Чтобы получить базовый URL, вы можете использовать:
HttpContext.Current.Request.Url.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped)
Как говорит Александр, вы можете использовать HttpContext.Current.Request.Url, но если вы не хотите использовать http://:
HttpContext.Current.Request.Url.GetComponents(UriComponents.HostAndPort, UriFormat.Unescaped);
Если это сборка, на которую могут ссылаться не-веб-проекты, вы можете не использовать пространство имен System.Web.
Я бы использовал метод DannySmurf.
Я придумал это, хотя я не уверен, что это лучшее решение:
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; } }
Вы можете использовать Assembly.GetExecutingAssembly (), чтобы получить объект сборки для DLL.
Затем вызовите Server.MapPath, передав FullPath этой сборки, чтобы получить локальный корневой путь.