net mvc ejemplos asp alternative c# asp.net-mvc static lucene.net server.mappath

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ó