سؤال

أحاول الحصول على قائمة أنواع MIME المعروفة لخادم IIS (الذي يمكنك رؤيته سُئل وأجبت من قبلي قبل عامين). تتضمن الإجابة المليئة بالنسخ:

GetObject("IIS://LocalHost/MimeMap") MSDN

GetObject("IIS://localhost/mimemap") KB246068

GetObject("IIS://localhost/MimeMap") مدونة سكوت هانسلمان

new DirectoryEntry("IIS://Localhost/MimeMap")) مكدس فائض

new DirectoryEntry("IIS://Localhost/MimeMap")) مكدس فائض

New DirectoryServices.DirectoryEntry("IIS://localhost/MimeMap") مراجعات السرعة


انت وجدت الفكرة. يتفق الجميع على أنك تستخدم مسارًا سحريًا IIS: // localhost/mimemap. وهذا يعمل بشكل رائع ، باستثناء الأوقات التي لا.

الفكرة الوحيدة التي يمكنني العثور عليها حول سبب فشلها ، من مدونة IIS MVP ، كريس كرو ، مدونة:

string ServerName = "LocalHost";
string MetabasePath = "IIS://" + ServerName + "/MimeMap";
    // Note: This could also be something like
    // string MetabasePath = "IIS://" + ServerName + "/w3svc/1/root";

DirectoryEntry MimeMap = new DirectoryEntry(MetabasePath);

هناك دليلان هنا:

  1. هو يتصل iis://localhost/mimemap ال مسار الأيض. وهو ما يبدو لي كما هو نوع من "طريق"إلى"التمثيل".
  2. يقول أن طريق إلى التمثيل يمكن أن يكون شيئًا آخر ؛ ويعطي مثالا على ما يمكن أن يكون.

الآن أنا ، والكوكب بأكمله ، أرد المتشددين ""Metabasepath" كما

iis://localhost/MimeMap

ماذا يجب أن يكون حقا؟ ما الذي يجب أن يفعله الرمز لبناء MetabasePath صالح؟


ملاحظة: أنا لا أحصل على خطأ مرفي في الوصول ، والخطأ هو نفسه عندما يكون لديك Metabasepath غير صالح ، على سبيل المثال iis://localhost/SoTiredOfThis

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

المحلول

إذا كنت تعمل مع تكوين IIS الخاص بجهازك المحلي ، أي الكود الخاص بك و IIS في نفس المربع ، فهذا يكفي تحديد:

IIS://Localhost/mimemap

ال IIS: يُعرف الجزء أيضًا باسم لقب في لغة أولي.

إذا فتحت ملف Metabase IIS6 (C:\Windows\System32\inetsrv\metabase.xml) ستجد "نقطة" كبيرة من XML. هذا في الواقع هيكل شجرة مسطح.

يتم تمثيل المسارات في عملية التمثيل Location صفات.

اللقب IIS://localhost خرائط ل Location طريق /LM وهو بشكل فعال جذر الشجرة.

اللقب IIS://localhost/MimeMap خرائط ل Location طريق /LM/MimeMap.

إذا كان الرمز الخاص بك يصل إلى عملية التمثيل على الآلات البعيدة ، فبدلاً من التحديد IIS://localhost/[path], ، يحدد المرء IIS://[RemoteMachineName]/[path]. هذا ما يعنيه تعليق كريس كراوس.

IIS://localhost/MimeMap هي أيضا قائمة نوع MIME MITER. جميع المواقع ترث هذه القائمة (تعتمد عملية إعادة IIS بشكل كبير على الخصائص الموروثة).

إذا كنت ترغب في تجاوز أنواع MIME لموقع معين ، فستقوم بتعديل:

IIS://localhost/W3SVC/[iisnumber]/ROOT/MimeMap

من المفيد فتح ملف Metabase IIS والحفر لفهم ما يجري تحت غطاء المحرك.

تحديث:

للإجابة على سؤالك حول لماذا يمكنك إنشاء ملف DirectoryEntry كائن حيث يكون المسار غير صالح ، DirectoryEntry هو كائن غلاف للأغراض العامة يستخدم لربط أنواع مختلفة من مزودي ADSI مثل IIS و LDAP و Winnt. يسمح بإنشاء DirectoryEntry الكائنات التي قد لا يكون فيها بالضرورة كائن مطابق في المسار المحدد. قد تتطلب بعض عمليات مزود ADSI هذه القدرة.

هناك طريقة ثابتة DirectoryEntry اتصل Exists التي يمكنك استخدامها لاختبار وجود كائنات. فمثلا:

// Does Default Website exist?
if(DirectoryEntry.Exists("IIS://localhost/w3svc/1"))
{
  // Do work...
}

نصائح أخرى

كنت أواجه مشكلة في إرجاع 0x80005000 عند محاولة القيام بذلك. كان السبب الغبي لمشكلتي هو أنني كنت أستخدم IIS7 ولم أقم بتثبيت دعم توافق Metabase IIS6.

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