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

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top