Saya sedang membangun situs ASP.NET MVC di mana saya menggunakan Lucene.Net untuk kueri penelusuran. Saya mengajukan pertanyaan di sini tentang cara menyusun penggunaan Lucene.Net dengan benar dalam aplikasi ASP.NET MVC dan diberi tahu bahwa metode terbaik adalah dengan mendeklarasikan my IndexWriter
as public static
, sehingga dapat digunakan kembali.
Berikut beberapa kode yang ada di bagian atas SearchController saya:
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);
Seperti writer
statis, IndexLocation
juga harus statis. Jadi, kompilator memberi saya kesalahan berikut untuk Server.MapPath()
:
Referensi objek diperlukan untuk bidang non-statis, metode, atau properti 'System.Web.Mvc.Controller.Server.get'
Apakah ada cara untuk menggunakan Server.MapPath () atau yang serupa dari bidang statis ? Bagaimana cara memperbaiki kesalahan ini?
sumber
Saya pikir Anda dapat mencoba ini untuk menelepon dari kelas
* ---------------- Maaf kekhilafannya, karena fungsi statis sudah menjawab pertanyaan dengan terpaut *
Memperbarui
Saya mendapat pengecualian saat menggunakan
System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");
Rincian ex: System.ArgumentException: Jalur virtual relatif 'SignatureImages' tidak diizinkan di sini. di System.Web.VirtualPath.FailIfRelativePath ()
Solusi (diuji dalam metode web statis)
System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/");
Bekerjasumber
Server.MapPath()
memungkinkan jalur "file / file1.doc". Ini menggunakan konteks saat ini untuk menentukan jalur halaman saat ini, misalnya, dan kemudian membuat jalur relatif dari sana. Jika kita masuk~/Subfolder/Page1.aspx
, url akan memetakan dari~/Subfolder/files/file1.doc
. IniHostingEnviornment.MapPath()
statis, dan karenanya selalu membutuhkan jalur virtual lengkap, dimulai dengan~/
bagian url.