Server.mappath em C# Classlibrary
-
20-09-2019 - |
Pergunta
Como posso usar o método server.mappath em uma classe de biblioteca de classe C#, que atua como meu BusinessLayer para o meu site do ASP.NET
Solução
Chamando isso?
var path = System.Web.HttpContext.Current.Server.MapPath("default.aspx");
Certifique -se de adicionar uma referência ao conjunto do sistema.Web.
Outras dicas
Você pode obter o caminho base usando o código a seguir e anexar o caminho necessário a isso.
string path = System.AppDomain.CurrentDomain.BaseDirectory;
Você deve referenciar o System.web e ligar:
HttpContext.Current.Server.MapPath(...)
Talvez você possa abstrair isso como uma dependência e criar um IVirtualPathResolver. Dessa forma, suas classes de serviço não estariam vinculadas ao System.Web e você poderá criar outra implementação se quisesse reutilizar sua lógica em uma tecnologia de interface do usuário diferente.
Usa isto System.web.hosting.hostingenvironment.mappath ().
HostingEnvironment.MapPath("~/file")
Gostaria de saber por que ninguém mencionou isso aqui.
HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(path);
Arquitetonicamente, o System.Web não deve ser referido na camada lógica de negócios (BLL). Empregue a BLL na estrutura da solução para seguir o princípio separado de preocupação, portanto, consulte o sistema. O BLL não deve carregar/executar no contexto asp.net. Por causa da razão pela qual você deve considerar usar de System.AppDomain.CurrentDomain.BaseDirectory
ao invés de System.Web.HttpContext.Current.Server.MapPath