質問

検索クエリに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/"); 働いた

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top