[英]Using Server.MapPath() inside a static field in ASP.NET MVC
我正在構建一個ASP.NET MVC站點,我正在使用Lucene.Net進行搜索查詢。 我在這里問了一個關於如何在ASP.NET MVC應用程序中正確構建Lucene.Net用法的問題 ,並被告知最好的方法是將我的IndexWriter
聲明為public static
,以便可以重用它。
以下是我的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);
由於writer
是靜態的,因此IndexLocation
也必須是靜態的。 因此,編譯器給出了Server.MapPath()
的以下錯誤:
非靜態字段,方法或屬性'System.Web.Mvc.Controller.Server.get'需要對象引用
有沒有辦法在靜態字段中使用Server.MapPath()或類似的東西 ? 我該如何解決這個錯誤?
試試HostingEnvironment.MapPath
,它是static
。
請參閱此SO問題以確認HostingEnvironment.MapPath
返回與Server.MapPath
相同的值: Server.MapPath和HostingEnvironment.MapPath之間有什么區別?
我想你可以試着從課堂上打電話
System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/");
* ----------------抱歉我疏忽了,因為靜態功能已經通過adrift 回答了問題 *
System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");
更新
我在使用System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");
遇到異常System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");
Ex詳細信息:System.ArgumentException:此處不允許使用相對虛擬路徑“SignatureImages”。 在System.Web.VirtualPath.FailIfRelativePath()
解決方案(在靜態web方法中測試)
System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/");
工作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.