سؤال

كيف يمكنني استخدام طريقة Server.mappath في فئة مكتبة فئة C #، والتي تعمل كعنصر أعمال لي لموقع ASP.NET الخاص بي

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

المحلول

عن طريق الاتصال به؟

var path = System.Web.HttpContext.Current.Server.MapPath("default.aspx");

تأكد من إضافة مرجع إلى مجموعة System.Web.

نصائح أخرى

يمكنك الحصول على المسار الأساسي باستخدام التعليمات البرمجية التالية وإلحاق مسارك المطلوب به.

string  path = System.AppDomain.CurrentDomain.BaseDirectory;

يجب أن تشير إلى System.Web والاتصال:

  HttpContext.Current.Server.MapPath(...)

ربما يمكنك التخلص من ذلك كإعالة وإنشاء ivirtualpathresolver. وبهذه الطريقة لن تكون فئات الخدمة الخاصة بك لن تكون مرتبطة بالنظام. ويب ويمكنك إنشاء تنفيذ آخر إذا كنت ترغب في إعادة استخدام منطقك في تقنية UI مختلفة.

استخدم هذا system.web.hosting.hostingenvironment.mappath ().

HostingEnvironment.MapPath("~/file")

أتساءل لماذا لم يذكر أحد هنا.

HostingEnvironment.MapPath
System.Web.Hosting.HostingEnvironment.MapPath(path);

معماريا، لا ينبغي إحالة System.Web في طبقة منطق الأعمال (BLL). توظف BLL في هيكل الحل لمتابعة مبدأ القلق المنفصل حتى يشير System.Web ممارسات سيئة. يجب عدم تحميل / تشغيل BLL في سياق ASP.NET. بسبب السبب يجب أن تفكر في استخدام System.AppDomain.CurrentDomain.BaseDirectory بدلاً من System.Web.HttpContext.Current.Server.MapPath

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top