簡體   English   中英

在ASP.NET MVC中的靜態字段內使用Server.MapPath()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM