سؤال


ينطبق ترخيص URL فقط على أنواع الملفات ذات الصلة بـ Asp.Net؟ 1 ولكن لماذا لا يمكن تطبيقه أيضًا على أنواع الملفات غير التابعة لـ Asp.Net؟


ثانكس

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

المحلول

وهذا بسبب خرائط البرامج النصية لـ ASP.NET.يتم تعيين ملحقات معينة فقط في ASP.NET.تتم معالجة الباقي مباشرة بواسطة IIS.وهذا حسب التصميم لأسباب تتعلق بالأداء.

هناك طريقتان للتعامل مع هذا.

  1. قم بتكرار قواعد الترخيص الخاصة بك في ملفات web.config في قوائم ACL لملفات NTFS (أي، قم بتعيين الأذونات على المجلدات والملفات مباشرة).تأكد من أن نظام مصادقة المستخدم يطابق الحسابات والمجموعات المستخدمة للتحكم في الوصول...بمعنى آخر، إذا كنت تستخدم SQL لتخزين الرموز المميزة لاسم المستخدم، فلن ينجح هذا، لأن هذه الرموز المميزة لن تؤدي بالضرورة إلى تعيين مستخدمي المجال والمجموعات/الأدوار.

  2. يخترع IHttpHandler لخدمة ملفاتك غير التابعة لـ ASP.NET.من ProcessRequest الطريقة، استدعاء Server.MapPath(url) الطريقة على عنوان URL الوارد، ثم قم بإخراج الملف باستخدام Response.WriteFile(filename).ربما ستحتاج إلى تعيين خاصية ContentType أولاً.و(هذه هي الأخبار السيئة)، ربما لا تزال بحاجة إلى إجراء فحص وصول تصريحي أو ضروري - قد لا يعمل مجرد الحصول على الإدخالات في ملفات web.config.يرى معالجة ASP.NET مخصصة باستخدام HTTP لمزيد من المعلومات حول كتابة المعالج الخاص بك.ربما تكون فكرة جيدة إنشاء معالجات منفصلة لكل نوع محتوى.بمجرد أن تكتب واحدة، سترى مدى سهولة صنعها.

يمكنك يحاول (لم أجرّب ذلك بنفسي) لإضافة عناصر <httpHandlers> إلى ملفات web.config حيث يكون لديك عناصر <authorization> إضافية - استخدم العنصر <remove> لإزالة عنصر HttpHandler الموروث وإضافة عنصر آخر على مستوى المجلد الفرعي (ربما مشيرا إلى نفس الفئة؟).لست متأكدًا من أن هذا سينجح، لكن الأمر يستحق المحاولة.

أخيرًا، إذا كنت لا ترغب حقًا في متابعة كل هذا العمل والقيام به، فيمكنك ببساطة إضافة المزيد من تعيينات الامتدادات في IIS.على سبيل المثال، نلقي نظرة على كيف:تسجيل معالجات HTTP, ، يمكنك إضافة تعيين لملفات .jpg إلى aspnet_isapi.dll (ألق نظرة على التعيينات الموجودة لملفات .aspx وما إلى ذلك).لا تحتاج إلى إضافة عنصر HttpHandler إلى web.config، لأن web.config على مستوى الجهاز يحتوي بالفعل على هذا الإدخال:

<add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="true"/>

يرجى ملاحظة أن هذا قد يؤدي إلى مشكلات خطيرة جدًا في الأداء على موقعك.

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