server.mappath لا يعمل
-
02-10-2019 - |
سؤال
أحاول الوصول إلى الملفات في دليل افتراضي قمت بإنشائه في IIS لأول مرة ، لكنني أحصل على نتائج غريبة.
OS: Windows XP Pro
IIS: 5.1
منصة التطوير: Visual Studio 2008
اللغة: ج#
اسم الدليل الافتراضي: البوابة
المسار المحلي: C: digital_communications_report_portal
موقع الويب الافتراضي المسار المحلي: C: inetpub wwwroot
يمكنني تنزيل الملف على http: //localhost/portal/testfile.xlsx بدون اي مشكلة.
أحاول أي من هؤلاء
string realFilename = Server.MapPath(ResolveUrl("~/portal/testFile.xlsx"));
string realFilename = Server.MapPath(ResolveUrl("localhost/portal/testFile.xlsx"));
واحصل على "C: المستندات والإعدادات jJohnson My Documents Visual Studio 2008 Websites ClientiTITE localhost portal testfile.xlsx" وهو مسار مشروعي مع المسار الظاهري الصفع في النهاية وليس مسارًا صحيحًا . أحاول أخذ Tilde أو LocalHost وأحصل على "فشل في تعيين المسار"/portal/testfile.xlsx ". استثناء.
أي أفكار ما أفعله خطأ؟
المحلول
اذا لم اكن مخطئ، Server.MapPath(ResolveUrl("~/relative/path/to/file"))
ليس ما تريد. سوف ينتج /rooted/path/to/file
التي عندما تنتقل إلى Server.MapPath()
لن تسفر عن موقع صالح.
بدلا من ذلك ببساطة استخدام Server.MapPath("~/relative/path/to/file");
تحديث
تكمن المشكلة التي تواجهها في حقيقة أنك تضمن اسم الدليل الافتراضي ("البوابة") في عنوان URL النسبي. لا يحتاج عنوان URL النسبي إلى تحديد اسم الدليل الظاهري ، فقط المسار إلى الملف المطلوب بالنسبة إلى جذر التطبيق.