كيف يمكنني استخدام Server.mappath () من Global.asax؟
-
06-09-2019 - |
سؤال
أحتاج إلى استخدام Server.MapPath()
للجمع بين بعض مسارات الملفات التي أخزنها في web.config
.
لكن منذ Server.MapPath()
يعتمد على httpcontext الحالي (على ما أعتقد)، لا أستطيع القيام بذلك. عند محاولة استخدام الطريقة، على الرغم من أنها "متوفرة"، أحصل على الاستثناء التالي:
عملية الخادم غير متوفرة في هذا السياق.
هل هناك طريقة أخرى يمكنها تعيين الدليل النسبي الجذر على الويب مثل ~/App_Data/
إلى المسار المادي الكامل مثل C:\inetpub\wwwroot\project\App_data\
?
المحلول
بامكانك ان تحاول system.web.hosting.hostingenvironment.mappath ().
لا httpccontext المطلوبة.
نصائح أخرى
يستخدم AppDomain.CurrentDomain.BaseDirectory
لأن Context
قد يعود null !!
عندما تكون في global.asax، استخدم سياق الكلام هدف:
context.server.mappath ()
يتيح لك السياق الوصول أيضا إلى مجموعة الجلسة، وكائن الطلب، وكائن الاستجابة. مفيد جدا عندما تريد تسجيل الأخطاء، على سبيل المثال
يمكنك تجربة httpccontext.current.server.mappath ("/") - هكذا أشارت إليه من قبل في الفصول الدراسية.