ASP.NET MVCの静的フィールド内でserver.mappath()を使用する
-
05-10-2019 - |
質問
検索クエリにlucene.netを使用しているASP.NET MVCサイトを構築しています。私 ここで質問しました 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
.
確認のためにこれを参照してください 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/");
EX詳細:System.ArgumentException:相対的な仮想パス「署名イメージ」はここでは許可されていません。 System.Web.VirtualPath.FailifRelativePath()で
ソリューション(静的WebMethodでテスト)
System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/");
働いた