Server.MapPath(".")، Server.MapPath("~")، Server.MapPath(@"\")، Server.MapPath("/").ماهو الفرق؟
-
07-07-2019 - |
سؤال
هل يمكن لأحد أن يشرح الفرق بين Server.MapPath(".")
, Server.MapPath("~")
, Server.MapPath(@"\")
و Server.MapPath("/")
?
المحلول
Server.MapPath يحدد المسار النسبي أو الظاهري للتعيين إلى الدليل الفعلي.
Server.MapPath(".")
1 إرجاع الدليل الفعلي الحالي للملف (على سبيل المثال.aspx) قيد التنفيذServer.MapPath("..")
إرجاع الدليل الأصلServer.MapPath("~")
إرجاع المسار الفعلي إلى جذر التطبيقServer.MapPath("/")
إرجاع المسار الفعلي إلى جذر اسم المجال (ليس بالضرورة نفس جذر التطبيق)
مثال:
لنفترض أنك أشرت إلى تطبيق موقع ويب (http://www.example.com/
) ل
C:\Inetpub\wwwroot
وقم بتثبيت تطبيق المتجر الخاص بك (الويب الفرعي كدليل ظاهري في IIS، تم وضع علامة عليه كتطبيق) في
D:\WebApps\shop
على سبيل المثال، إذا اتصلت Server.MapPath()
في الطلب التالي:
http://www.example.com/shop/products/GetProduct.aspx?id=2342
ثم:
Server.MapPath(".")
1 عائداتD:\WebApps\shop\products
Server.MapPath("..")
عائداتD:\WebApps\shop
Server.MapPath("~")
عائداتD:\WebApps\shop
Server.MapPath("/")
عائداتC:\Inetpub\wwwroot
Server.MapPath("/shop")
عائداتD:\WebApps\shop
إذا بدأ المسار إما بشرطة مائلة للأمام (/
) أو شرطة مائلة للخلف (\
)، ال MapPath()
يُرجع مسارًا كما لو كان المسار مسارًا افتراضيًا كاملاً.
إذا لم يبدأ المسار بشرطة مائلة، فسيتم MapPath()
تقوم بإرجاع مسار متعلق بدليل الطلب الذي تتم معالجته.
ملحوظة:شركة#، @
هو مشغل السلسلة الحرفية مما يعني أنه يجب استخدام السلسلة "كما هي" وعدم معالجتها لتسلسلات الهروب.
الحواشي
Server.MapPath(null)
وServer.MapPath("")
سوف إنتاج هذا التأثير أيضا.
نصائح أخرى
وفقط للتوسع في الجواب @ splattne وقليلا:
وMapPath(string virtualPath)
يدعو يلي:
public string MapPath(string virtualPath)
{
return this.MapPath(VirtualPath.CreateAllowNull(virtualPath));
}
وMapPath(VirtualPath virtualPath)
بدوره يدعو MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)
الذي يحتوي على ما يلي:
//...
if (virtualPath == null)
{
virtualPath = VirtualPath.Create(".");
}
//...
وحتى إذا كنت استدعاء MapPath(null)
أو MapPath("")
، الذي تتصل به بشكل فعال MapPath(".")
1) Server.MapPath(".")
- إرجاع "التيار دليل البدنية" الملف (على سبيل المثال aspx
) يتم تنفيذه
والسابقين. D:\WebApplications\Collage\Departments
نفترض
2) Server.MapPath("..")
- إرجاع "دليل الأم"
والسابقين. D:\WebApplications\Collage
و3) Server.MapPath("~")
- إرجاع "المسار الفعلي إلى جذر التطبيق"
والسابقين. D:\WebApplications\Collage
و4) Server.MapPath("/")
- إرجاع المسار الفعلي لجذر اسم المجال
والسابقين. C:\Inetpub\wwwroot