mvc - server.mappath c# windows forms
Usando Server.MapPath() dentro de un campo estático en ASP.NET MVC (2)
Estoy construyendo un sitio ASP.NET MVC donde estoy usando Lucene.Net para consultas de búsqueda. Hice una pregunta aquí sobre cómo estructurar correctamente el uso de Lucene.Net en una aplicación ASP.NET MVC y me dijeron que el mejor método es declarar mi IndexWriter
como public static
, para que pueda ser reutilizado.
Aquí hay un código que se encuentra en la parte superior de mi SearchController:
public static string IndexLocation = Server.MapPath("~/lucene");
public static Lucene.Net.Analysis.Standard.StandardAnalyzer analyzer = new Lucene.Net.Analysis.Standard.StandardAnalyzer();
public static IndexWriter writer = new IndexWriter(IndexLocation,analyzer);
Como el writer
es estático, IndexLocation
también debe ser estático. Por lo tanto, el compilador me da el siguiente error para Server.MapPath()
:
Se requiere una referencia de objeto para el campo, método o propiedad no estático ''System.Web.Mvc.Controller.Server.get''
¿Hay alguna forma de usar Server.MapPath () o algo similar de un campo estático ? ¿Cómo puedo solucionar este error?
Creo que puedes probar esto para llamar desde una clase
System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/");
* ---------------- Disculpa, descuido, para funciones estáticas ya respondí la pregunta a la deriva *
System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");
Actualizar
Obtuve una excepción al usar System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");
Detalles ex: System.ArgumentException: la ruta virtual relativa ''SignatureImages'' no está permitida aquí. en System.Web.VirtualPath.FailIfRelativePath ()
Solución (probado en webmethod estático)
System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/");
Trabajó
Pruebe HostingEnvironment.MapPath
, que es static
.
Consulte esta pregunta HostingEnvironment.MapPath
para confirmar que HostingEnvironment.MapPath
devuelve el mismo valor que Server.MapPath
: ¿Cuál es la diferencia entre Server.MapPath y HostingEnvironment.MapPath?