Pregunta

Estoy construyendo un sitio ASP.NET MVC donde yo estoy usando Lucene.Net las consultas de búsqueda. Me hecho una pregunta aquí acerca de cómo estructurar adecuadamente el uso Lucene.Net en una aplicación ASP.NET MVC y me dijeron que el mejor método es declarar la mi IndexWriter como public static, de modo que pueda ser reutilizada.

Aquí hay un código que está 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 writer es estática, IndexLocation también debe ser estática. Por lo tanto, el compilador me da el siguiente error de Server.MapPath():

Se requiere una referencia de objeto para el campo no estático, el método o propiedad 'System.Web.Mvc.Controller.Server.get'

¿Hay una forma de usar Server.MapPath () o algo similar de un campo estático ? ¿Cómo puedo solucionar este error?

¿Fue útil?

Solución

Trate HostingEnvironment.MapPath , que es static.

Vea esta pregunta SO confirmación de que HostingEnvironment.MapPath devuelve el mismo valor que Server.MapPath: ¿Cuál es la diferencia entre Server.MapPath y HostingEnvironment.MapPath?

Otros consejos

Creo que se puede probar esto para llamar desde una clase

 System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/");

* ---------------- I supervisión Lo siento, para la función estática ya ha respondido a la pregunta por la deriva *

System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");

Actualizar

Tengo una excepción durante el uso de System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");

Detalle del Ex: System.ArgumentException: no se permite aquí Las relativos de ruta '' SignatureImages virtuales. en System.Web.VirtualPath.FailIfRelativePath ()

Solution (probado en WebMethod estática)

System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/"); Trabajado

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top