الحصول على تصحيح المسار المطلق في مكتبة المستخدمة من قبل مشروع على شبكة الإنترنت

StackOverflow https://stackoverflow.com/questions/602265

  •  03-07-2019
  •  | 
  •  

سؤال

لدي asp.net mvc مشروع يستخدم بعض طرق البحث في مكتبة منفصلة.هذه المكتبة يحتاج إلى معرفة الموقع من لوسين فهرسة الملفات.

    private static string lucenePath = ConfigurationManager.AppSettings["lucenePath"];

    public static ColorList SearchColors(Query query) {
        return new ColorList(
            new IndexSearcher(Path.GetFullPath(lucenePath)),
            query);
    }

هذا صحيح تقرأ تكوين lucenePath من شبكة الإنترنت.config تطبيق العقدة الرئيسية.ولكن كيف يمكن الحصول على المسار الكامل الصحيح من هذه النسبية الطريق ؟ مسار.GetFullPath يعطيني تماما مسار غير صحيح.

--خاتمة -
إذا كنت تريد أن تذهب كامل ، tvanfosson's الإجابة ربما لك.
بيد أن أبقى أكثر من ذلك بقليل الدماغ الميتة باستخدام التالية:

Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
    ConfigurationManager.AppSettings["luceneIndex"].TrimStart('\\'));

هذا سوف ننظر في المتصل التطبيق.التكوين عن appkey يسمى "المسار" و الجمع بين قيمته إلى المتصل المسار.على TrimStart() التأكد من أن ملف يمكن أن تحتوي على كل رائد \ أم لا.

هل كانت مفيدة؟

المحلول

منذ كنت المراجع من مكتبة منفصلة ، قد تحتاج إلى القفز من خلال مجموعة من الأطواق للحصول على الوصول إلى HttpServerUtitity أو إدخال بعض اقتران إلى الفئات التي يصعب وهمية.قد ترغب في النظر في وجود واحد من الطبقة التكوين الذي يحمل خصائص من تكوين شبكة الإنترنت أن يحصل حقن المكتبة الخاصة بك عن طريق منشئ/واضع.لجعله أسهل اختبار ضد, يمكنك تحديد واجهة التي يمكن أن سخر في وحدة الاختبارات ويكون تنفيذ ذلك.تكوين الطبقة يمكن استخدام HttpServerUtility للحصول على المسار المطلق وتخزينها داخليا لإعادة استخدامها.

نصائح أخرى

Server.MapPath(string);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top