Pertanyaan Pemetaan masalah HttpHandler -> Kesalahan HTTP 404 Tidak Ditemukan


Saya mengalami masalah saat mencoba memetakan HttpHandler di web.config.

Ini adalah bit konfigurasi yang relevan:

<httpHandlers>
  <add verb="*" path="*.hndlr" type="MyAssembly.MyHandler, MyAssembly" validate="false" />
</httpHandlers>

Saat saya menavigasi ke http://localhost/myApp/whatever.hndlr Saya mendapatkan kesalahan server 404 (tidak ditemukan).

Ini adalah pertama kalinya saya mengaitkan HttpHandler jadi saya mungkin kehilangan sesuatu - bantuan apa pun dihargai!

MEMPERBARUI:

Saya berhasil membuatnya bekerja menggunakan kedua jawaban sejauh ini - siapa yang mampu mengekstrak mengapa itu berhasil mendapatkan jawaban yang ditandai!

Ini adalah konfigurasi saya (tidak akan berfungsi jika tidak memiliki keduanya - saya sedang berjalan IIS7 dalam mode klasik)

System.web:

<httpHandlers>
    <add verb="*" path="*MyHandler.hndlr" type="MyAssembly.MyAssemblyHandler, MyAssembly" validate="false"/>
</httpHandlers>

System.webserver:

<handlers>
    <add name="MyHandler" verb="*" path="*MyHandler.hndlr" type="MyAssembly.MyAssemblyHandler, MyAssembly" validate="false" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script"/>
</handlers>

32
2018-05-18 15:35


asal


Jawaban:


Apakah Anda menggunakan IIS7, jika begitu aplikasi pool berjalan dalam mode klasik atau pipelined? Jika IIS7 dalam mode pipelined maka referensi handler harus masuk ke bagian berikut

<system.webServer>
    <handlers>
    </handlers>
<system.webServer>

daripada di bagian berikut.

<system.web>
    <httpHandlers>
    </httpHandlers>
</system.web>

27
2018-05-18 15:45



Hanya sebagai panduan bagi mereka yang terjebak dengan masalah ini saya menemukan atribut penting untuk menjadi ..

resourceType="Unspecified"

Saya awalnya mengikuti contoh Microsoft untuk mengatur ini dan mereka memilikinya sebagai

resourceType="File"

yang terus memberi saya 404 kesalahan. HTTPHandler saya mengembalikan grafik.

Semoga ini membantu :)


9
2018-03-09 14:38



Saya menggunakan IIS7, solusinya adalah:

di bagian

<system.web>
    <httpHandlers>
        <add verb="*" path="*.ashx" type="CVOS.MyDocumentHandler"/>
    </httpHandlers>
<system.web>

dan bagian

<system.webServer>
    <handlers>
       <add name="pdfHandler" verb="*" path="*.ashx"   type="CVOS.MyDocumentHandler" /> 
    </handlers>
</system.webServer>

5
2018-01-23 14:47



Apa ekstensi dari handler Anda? Jika Anda menggunakan ekstensi khusus seperti .hndlr Anda mungkin juga perlu menambahkan ScriptMap di IIS dan arahkan ke ASP.NET runtime sehingga IIS dapat meneruskan permintaan ke prosesor yang benar.


  1. Di IIS7, buka situs web Anda
  2. Di bawah grup IIS pergi ke Handler Mappings
  3. Dibawah Tindakan klik Tambahkan Peta Skrip
  4. Setel Jalur Permintaan ke * .hndlr
  5. Set Path ke ASP.NET runtime (% windir% \ Microsoft.NET \ Framework64 \ v2.0.50727 \ aspnet_isapi.dll) atau versi apa pun yang Anda jalankan.

Kemudian di web.config Anda, Anda harus mendaftarkan handler di bagian yang sesuai seperti yang dijelaskan dalam jawaban lainnya.


4
2018-05-18 16:49



Anda juga mungkin mengalami kesalahan ini jika Anda telah mengatur handler untuk 32 bit, tetapi Anda menjalankan dalam 64 bit (atau sebaliknya). Sangat mudah untuk mengatur keduanya dan memiliki semua basis tertutup.

Perhatikan perbedaan "preCondition", dan "scriptProcessor".

<handlers>
    <add name="MyHandler_32bit" verb="*" path="*MyHandler.hndlr" preCondition="bitness32" type="MyAssembly.MyAssemblyHandler, MyAssembly" validate="false" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" />
    <add name="MyHandler_64bit" verb="*" path="*MyHandler.hndlr" preCondition="bitness64" type="MyAssembly.MyAssemblyHandler, MyAssembly" validate="false" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" />
</handlers>

2
2017-07-30 05:34



Semoga solusi saya akan membantu orang lain. Pada server pindah dari IIS6 ke 7.5, keduanya .Net 4.0 Terpadu, saya memiliki kontrol Captcha yang berhenti berfungsi. Ternyata menghapus atribut ini preCondition="integratedMode,runtimeVersionv2.0"  dari <add> simpul dalam <system.webserver><handlers> menyelesaikan masalah.


0
2018-01-22 18:50



Tak satu pun dari jawaban sebelumnya yang berhasil untuk saya.
saya menggunakan IIS 8.5, .Net v4.0, Integrated, dan masih mendapatkan 404 dengan konfigurasi pengendali berikut:

<system.webServer>
    <handlers>
       <add name="testEmail" path="*.em" verb="*" type="MyApp.testRazorEmailHandler, MyApp" resourceType="Unspecified" requireAccess="Script" />
    </handlers>
</system.webServer>


Saya mengaktifkan penelusuran dan menemukan yang berikut:

116. -HANDLER_CHANGED 

    OldHandlerName              testEmail 
    NewHandlerName              System.Web.Mvc.MvcHandler 
    NewHandlerModules           ManagedPipelineHandler 
    NewHandlerScriptProcessor
    NewHandlerType              System.Web.Mvc.MvcHandler, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 


Seperti yang Anda lihat sepertinya itu benar mengambil permintaan menggunakan HttpHandler kebiasaan saya testEmail tapi MVC telah mencurinya.
Saya membuka definisi rute saya di RouteConfig.cs dan menemukan bahwa menambahkan:

   routes.IgnoreRoute("{resource}.em");

Saya mendapatkannya untuk mengabaikan permintaan yang ditujukan untuk Handler saya.
Semoga ini bisa membantu seseorang - saya merobek rambut saya!


0
2017-08-08 08:04