سؤال

لدي تطبيق MVC4 أضفت إليه HttpHandler:

<system.web>
    ...
    <httpHandlers>
        <add path="Files" verb="*" type="MyHttpHandler" />
    </httpHandlers>
</system.web>

لقد تجاهلت أيضًا المسار ذي الصلة في RegisterRoutes بحيث لا يتم التعامل مع طلبات "الملفات" بواسطة MVC:

routes.IgnoreRoute("Files/{*pathInfo}");

المشكلة هي أن MyHttpHandler يتم الاحتجاج به فقط للحصول على طلبات إلى "الملفات" ، وليس لأي من أطفالها أو أصحابها الفرعي.

لقد حاولت استخدام <location> العنصر ، لكن الحصول على ذلك يعني أنك ستقوم بترميز المسار الافتراضي للتطبيق في سمة "المسار" (على سبيل المثال ، <location path='MyApp\Files'>).

ما هي الطريقة الصحيحة التي يجب استخدامها للسماح لجميع طلبات "الملفات" وأي من أصحابها الفرعيين (والمرحلين الفرعيين لهؤلاء المجلد ، إلخ) للتوجيه إليه MyHttpHandler?

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

المحلول

خدش ذلك ...<location> يبدو أنه يعمل بشكل جيد. رغم ذلك ، فأنت بحاجة إلى كلاهما <web> و <webServer> إدخالات للتأكد من أنه يعمل لكل من IIS وخادم Visual Studio Development. فمثلا:

<location path="Files">`
    <system.webServer>
        <handlers>
            <add name="MyHandler" path="*" verb="*" type="MyHttpHandler" />
        </handlers>
    </system.webServer>
    <system.web>
        <httpHandlers>
            <add path="*" verb="*" type="MyHttpHandler" />
        </httpHandlers>
    </system.web>
</location>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top