ASP.NET MVC এ স্ট্যাটিক ফিল্ডের ভিতরে সার্ভার.ম্যাপপথ () ব্যবহার করা


116

আমি একটি এএসপি নেট নেট এমভিসি সাইট তৈরি করছি যেখানে আমি অনুসন্ধানের অনুসন্ধানের জন্য লুসিন. নেট ব্যবহার করছি। আমি কীভাবে এএসপি.নেট এমভিসি অ্যাপ্লিকেশনটিতে লুসিন নেট ব্যবহারের কাঠামো সঠিকভাবে গঠন করবেন সে সম্পর্কে এখানে একটি প্রশ্ন জিজ্ঞাসা করেছি এবং আমাকে বলা হয়েছিল যে সেরা পদ্ধতিটি আমার IndexWriterহিসাবে ঘোষণা করা public static, যাতে এটি পুনরায় ব্যবহার করা যায়।

এখানে কিছু কোড যা আমার অনুসন্ধানকন্ট্রোলারের শীর্ষে রয়েছে:

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():

অ স্থিতিশীল ক্ষেত্র, পদ্ধতি, বা সম্পত্তি 'সিস্টেম. ওয়েবে.এমভিসি.কন্ট্রোলার সার্ভার.জেট' এর জন্য একটি অবজেক্ট রেফারেন্স প্রয়োজন '

সার্ভার.ম্যাপপথ () বা স্ট্যাটিক ক্ষেত্রের অনুরূপ কিছু ব্যবহার করার কোনও উপায় আছে কি ? আমি কীভাবে এই ত্রুটিটি ঠিক করতে পারি?

উত্তর:


240

চেষ্টা করুন HostingEnvironment.MapPath, যা হয় static

নিশ্চিতকরণের জন্য এই SO প্রশ্নটি দেখুন HostingEnvironment.MapPathযা একই মানটি ফেরত দেয় Server.MapPath: সার্ভার.ম্যাপপথ এবং হোস্টিং-পরিবেশ vironment ম্যাপপথের মধ্যে পার্থক্য কী?


এই ফাংশনটি আমাকে হোস্টিংএইনভায়রনমেন্ট দ্বারা সংস্কার করা ফলাফল হিসাবে ত্রুটি দেয় ap ম্যাপপথ সার্ভার.ম্যাপপথের মতো নয়, পরবর্তীটি আপেক্ষিক ইউআরএল নয় একটি পরম url
জন

@ জোহান, আমি উভয়ের জন্য একই মান পেয়েছি।
PS2goat

45

আমি মনে করি আপনি ক্লাস থেকে কল করার জন্য এটি চেষ্টা করতে পারেন

 System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/");

* ---------------- দুঃখিত আমি তদারকি করছি, কারণ স্থির ফাংশন ইতিমধ্যে অ্যাড্রিফ্ট দ্বারা প্রশ্নের উত্তর দিয়েছে *

System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");

হালনাগাদ

আমি ব্যবহার করার সময় ব্যতিক্রম পেয়েছিলাম System.Web.Hosting.HostingEnvironment.MapPath("~/SignatureImages/");

পূর্বের বিবরণ: সিস্টেম.অর্গুমেন্ট এক্সসেপশন: আপেক্ষিক ভার্চুয়াল পাথ 'সিগনেচারআইমেজস' এখানে অনুমোদিত নয়। System.Web.VirtualPath.FailIfRelativePath () এ

সমাধান (স্ট্যাটিক ওয়েবমেডোডে পরীক্ষিত)

System.Web.HttpContext.Current.Server.MapPath("~/SignatureImages/"); কাজ করছে


1
কোডটি যখন আপেক্ষিক ভার্চুয়াল পাথ ব্যবহার করে তখন আপনি যখন আপডেট হিসাবে উল্লেখ করেছিলেন কেবল তত্ক্ষণাটি আমি তা দেখেছি। উদাহরণস্বরূপ, Server.MapPath()"ফাইল / ফাইল1.ডোক" এর পথের অনুমতি দেয়। এটি বর্তমান পৃষ্ঠার পথ নির্ধারণের জন্য বর্তমান প্রসঙ্গটি ব্যবহার করে উদাহরণস্বরূপ এবং তারপরে সেখান থেকে আপেক্ষিক পথ তৈরি করে। আমরা যদি থাকি ~/Subfolder/Page1.aspxতবে ইউআরএল থেকে মানচিত্রটি প্রকাশ করা হবে ~/Subfolder/files/file1.docHostingEnviornment.MapPath()স্ট্যাটিক হয়, এবং এইভাবে সবসময় পূর্ণ ভার্চুয়াল পথ প্রয়োজন, দিয়ে শুরু ~/url এর অংশ।
PS2goat
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.