HTTP 404 Halaman Tidak Ditemukan di Web Api yang dihosting di IIS 7.5

96

Saya memiliki aplikasi Web Api. Ini bekerja dengan sangat baik ketika saya mengujinya menggunakan server dev debugging VS 2010. Tapi sekarang saya menerapkannya ke IIS 7.5 dan saya mendapatkan kesalahan HTTP 404 saat mencoba mengakses aplikasi.

Ini web.config saya

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-FlowGearProxy-20123141219;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="true" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
</configuration>
Armand
sumber
2
Saya memiliki masalah yang sama. Saya belum menemukan solusinya, namun satu hal yang saya temukan adalah jika memilih situs di IIS, kemudian masuk ke fitur Pemetaan Penangan, ada pemetaan untuk file statis yang memetakan * ke file yang harus ada. Ketika saya menghapus pemetaan ini dan menambahkan pemetaan baru untuk semua kata kerja HTTP, saya tidak lagi mendapatkan 404, itu diganti dengan halaman putih kosong.
Despertar
>> menggunakan server dev debugging VS 2010. - AKA si jahat Cassini. Lihat blogs.msdn.com/b/rickandy/archive/2011/04/22/… - Jika tidak berhasil, buat aplikasi MVC 4 WebApi baru dan uji penerapan - sederhana
RickAndMSFT

Jawaban:

93

Saya juga berjuang dengan ini. Untungnya, Steve Michelotti mendokumentasikan solusi yang berhasil untuk saya di sini .

Pada akhirnya, saya mengaktifkan semua kata kerja (verb = "*") ke penangan ExtensionlessUrlHandler-Integrated-4.0 di konfigurasi web saya.

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
        <handlers>
            <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
            <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
        </handlers>
</system.webServer>

Yang lain menunjukkan bahwa mengaktifkan WebDAV menyebabkan masalah. Untungnya, saya tidak mengalami masalah itu juga.

Kevin Ortman
sumber
3
1 untuk yang itu. Tapi saya mengubahnya di Pemetaan Penangan pada Aplikasi dari dengan Manajer IIS. Itu diaktifkan untuk sekelompok kata kerja. Saya mengubahnya menjadi semua kata kerja (*) dan voila. Tapi selalu lebih baik untuk memasukkan sumbernya.
Wolf5
1
Saya memiliki masalah yang sama, tetapi perubahan ini tidak membantu saya. Apakah ada konfigurasi lain juga? Atau bisa jadi referensi perpustakaan? Silakan, lihat juga: stackoverflow.com/questions/27303523/…
Babak
2
banyak orang mengatakan bahwa menggunakan runAllManagedModulesForAllRequests akan mempengaruhi kinerja (periksa jawaban dari hemant gautam di bawah). Namun saya tidak bisa mendapatkan layanan yang sama berfungsi, jadi saya mengikuti konfigurasinya di sini: blog.maartenballiauw.be/post/2012/12/07/… Tautan itu juga menunjukkan bahwa mengaktifkan WebDAV dapat memengaruhi hasil juga
Hoàng Long
Jawaban yang luar biasa!
EnocNRoll - AnandaGopal Pardue
1
Bagi saya, kata kerjanya sudah *. Saya harus mengubah jalur untuk *membuatnya berfungsi karena *.masih menyebabkan masalah
Alsty
56

Punya masalah yang sama. Pengaturan konfigurasi ini menyelesaikan masalah.

<system.webServer>
    .....
    <modules runAllManagedModulesForAllRequests="true" />
    .....
</system.webServer>

Seperti dijelaskan dalam http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html solusi di atas harus dihindari. Gunakan ini sebagai gantinya. Solusi yang sama juga disediakan oleh Lopsided. Simpan di sini agar pengguna menghindari penerapan solusi kerja pertama.

<modules>
  <remove name="UrlRoutingModule-4.0" />
  <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  <!-- any other modules you want to run in MVC e.g. FormsAuthentication, Roles etc. -->
</modules>
hemant gautam
sumber
Bekerja dengan baik, tetapi ini bukan solusi yang sangat baik. Lebih baik menggunakan UrlRoutingModule (lihat jawaban Lopsided di bawah). britishdeveloper.co.uk/2010/06/…
Der_Meister
37

Jika IIS diinstal atau diaktifkan setelah ASP.NET, Anda harus mendaftar ASP.NET secara manual dengan IIS agar aplikasi .NET Anda berfungsi.

Untuk Windows 7 dan sebelumnya:

  1. Jalankan Command Prompt (cmd.exe) sebagai administrator.
  2. Arahkan ke lokasi .NET Framework yang sesuai. (misalnya C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319)
  3. Jalankan aspnet_regiis.exe -i

Untuk Windows 8 dan lebih baru:

  1. Dari menu start, ketik "Aktifkan atau nonaktifkan fitur windows" dan pilih hasil pertama.
  2. Perluas Layanan Informasi Internet: World Wide Web Services: Fitur Pengembangan Aplikasi dan pilih ASP.NET 4.5 (atau ASP.NET 3.5 jika Anda perlu mendukung proyek pada .NET Framework 2.0-3.5).
  3. Klik OK.
Brandon Gano
sumber
2
Saya bermigrasi dari IIS Express untuk pengembangan ke IIS penuh dan inilah yang memperbaikinya untuk saya. Terima kasih!
Jim Brown
1
Mirip dengan @JimBrown di atas; itu berhasil untuk saya setelah bermigrasi dari IIS express.
SolidRegardless
Ini memecahkannya bagi saya. Pada Windows 7, Visual Studio 2015 Ent, MVC 5 situs web baru, berubah dari IIS Express menjadi IIS penuh.
Geoff Gunter
26

Apakah Anda menjalankan aplikasi API Web dalam direktori virtual atau aplikasi?

Misalnya: Saya memiliki masalah yang sama ketika saya memindahkan proyek saya ke IIS lokal saya di bawah Situs Web Default> SampleWebAPI. Saya yakin ini karena perubahan dalam URLperutean sebagai berikut:

Asli: localhost:3092/api/values
Pindah: localhost/SampleWebAPI/api/values

Jika Anda memindahkan proyek API Web ke situs webnya sendiri yang berjalan pada port berbeda, tampaknya itu berfungsi.

Catatan tambahan: Saya telah memperumit masalah ini dengan menambahkan apisebagai alias dari aplikasi dalam situs web saya yang menyebabkan efektifnya URLmenjadi:

localhost:81/api/api/values - perhatikan ini setelah memindahkan situs web ke situs webnya sendiri

Oleh karena itu, karena saya ingin mempertahankan pemisahan antara situs web saya dan situs proyek mvc api web, saya mengubah aturan perutean global.asaxuntuk Web API "DefaultAPI" dari api/{controller}/{id}ke {controller}/{id}dan ASP.NET MVC Defaultdari {controller}/{id}ke info/{controller}/{id}.

Nicholas Barger
sumber
3
hehehe ... Saya telah diberi nama aplikasi saya di IISsebagai apijuga. Ini menyebabkan semua uji coba dan kesalahan debugging ini selama lebih dari 2 jam. Terima kasih banyak telah membagikan pengalaman Anda! Berganti nama dan sekarang saya kembali ke bisnis lagi. : D
Leniel Maccaferri
Terima kasih - ini adalah masalah saya! :)
Jen
Saya tidak yakin mengapa panggilan api gagal ketika saya meng-host proyek saya di bawah port 8080, hanya memindahkannya sebagai direktori virtual di bawah situs web default yang berhasil :)
Kiran
14

Ini adalah satu-satunya jawaban yang berhasil untuk saya ...

Saya memiliki masalah serupa ... Sepertinya apa pun yang saya lakukan, tidak ada yang dialihkan dan file global saya diabaikan begitu saja. Saya serius mempertimbangkan untuk mengakhiri semuanya sebelum saya menemukan jawaban ini. Saya harap tautan ini membantu orang lain.


Menambahkan yang berikut ke file web.config berhasil untuk saya:

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>

Tag system.webServer sudah ada di sana tentu saja tetapi saya menambahkan tag modul ke sana dan kemudian menghapus & menambahkan tag ke tag modul.

Miring
sumber
Pukul masalah ini di server 2008 (bukan R2), dan ini adalah satu-satunya solusi yang berhasil untuk saya. Juga, saya harus menggabungkan ini dengan mengatur kumpulan aplikasi ke mode "terintegrasi".
Zoomzoom
11

Beberapa hal yang perlu diperiksa:

  1. Pastikan Anda telah menginstal .NETFramework 4.
  2. Pastikan bahwa versi 4 dari .NET Framework dipilih untuk situs web & direktori virtual Anda (jika ada).
  3. Pastikan Anda telah menginstal MVC atau memiliki DLL yang sesuai di direktori bin Anda.
  4. Mungkin perlu mengizinkan ekstensi layanan web ASP.NET 4.0
  5. Letakkan aplikasi di pool aplikasinya sendiri.
  6. Pastikan direktori memiliki setidaknya izin eksekusi "Hanya Skrip".
Joe Schrag
sumber
Saya memiliki 4 aplikasi web normal lainnya yang berjalan pada server IIS yang sama dan semuanya menggunakan .net framework 4. jadi mana dari 4 poin tersebut yang tidak diperlukan? ketika saya menerbitkan aplikasi MVC saya, saya menambahkan add deploizable dependencies dan menambahkan ASP.NET MVC sehingga ada di direktori bin saya
Armand
@Arand Kedengarannya seperti Anda telah melakukan # 1. # 2 masih perlu. Menambahkan dependensi yang dapat diterapkan , jika Anda melakukannya seperti yang dijelaskan di sini: haacked.com/archive/2011/05/25/bin-deploying-asp-net-mvc-3.aspx , harus menangani # 3 di atas. # 4 mungkin atau mungkin tidak diperlukan meskipun saya tidak memiliki pengetahuan untuk memberi tahu Anda kapan & tidak diperlukan.
Joe Schrag
9

Saya memiliki masalah serupa. Saya memiliki pengaturan yang tepat di file web.config saya tetapi menjalankan kumpulan aplikasi dalam mode Klasik daripada mode Terpadu

tangkapan layar

Rob Sedgwick
sumber
7

Masalah ini juga bisa terjadi karena hal berikut

1. Di Web.Config

<system.webServer>
     <modules runAllManagedModulesForAllRequests="true" /> 
<system.webServer>

2. Pastikan yang berikut ini tersedia di folder bin di server tempat API Web digunakan

  • System.Net.Http

  • System.Net.Http.Formatting

  • System.Web.Http.WebHost

  • System.Web.Http

Rakitan ini tidak akan disalin di folder bin secara default jika terbitkan melalui Visual Studio karena paket API Web diinstal melalui Nuget di mesin pengembangan. Masih jika Anda ingin membuat file-file ini tersedia sebagai bagian dari publikasi Visual Studio maka Anda perlu mengatur CopyLocal ke True untuk Majelis ini

Sadish Kumar.V

Sadish Kumar V
sumber
DLL tersebut diperlukan jika Anda tidak memiliki MVC yang diinstal di Server. Dalam kasus saya, saya melihat halaman kosong ketika mencoba memanggil API. Menambahkan DLL secara manual berhasil untuk saya. Terima kasih!!
Vipul bhojwani
Masalah saya terpecahkan setelah menambahkan System.Net.Http ke folder publikasikan utama, milik saya adalah solusi Asp.net Core
mohas
6

Berdasarkan ini jawaban SO , aku hanya harus perubahan path="*."untuk path="*"untuk menambahkan ExtensionlessUrlHandler-Integrated-4.0di configuration>system.WebServer>handlersdalam sayaweb.config

Sebelum:

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

Setelah:

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
Greg
sumber
Terima kasih banyak Greg, saya akan membunuh saya karena jalan bodoh ini = "*." tapi sekarang, setelah menjatuhkan titik yang menyedihkan ini, semuanya bekerja dengan baik! Terima kasih banyak!
Junior Silva
5

Saya juga mengalami masalah ini. Saya memecahkan masalah dengan membuka Application Pools> Application Pool Name dan mengubah .NET Framework dari versi v.2.0.50727 menjadi v4.0.30319.

coson
sumber
1
Saya menemukan ini sendiri juga. Memberi suara positif pada jawaban Anda karena mudah terlewat. Ketika saya membuat situs untuk aplikasi saya, IIS secara otomatis membuat kolam aplikasi untuk saya, setel ke .NET v2.0 !! Mengapa mengapa mengapa?? :)
Mike Taverne
3

Saya harus menonaktifkan Opsi Penerbitan File "Prekompilasi selama penerbitan."

Pakman
sumber
Dan di mana Anda melakukan itu?
vapcguy
1
Ini pada dialog yang muncul saat Anda mengklik kanan proyek dan memilih Publikasikan. Ini terlihat seperti ini
Pakman
3

Ada perbaikan resmi dari microsoft: http://support.microsoft.com/kb/980368

Saya sangat TIDAK menyarankan untuk menggunakan <modules runAllManagedModulesForAllRequests = "true">. Ini mengarahkan semua permintaan (bahkan .jpg, .css, .pdf, dll) akan diproses oleh semua modul HTTP yang terdaftar. Ada dua momen negatif: a) beban tambahan pada sumber daya perangkat keras; b) potensi kesalahan, karena modul http akan memproses jenis konten baru.

Roman O
sumber
1
Terima kasih begitu banyak! Saya benar-benar mencoba segala sesuatu yang lain, dan ini adalah satu-satunya hal yang memperbaikinya.
Oran Dennison
Sama di sini, terima kasih banyak telah menambahkan jawaban ini! Apakah solusi untuk masalah saya!
Octavio Garbarino
2

Saya mulai mendapatkan tanggapan 404 dari API Web setelah mengikuti tutorial Windows Azure yang meminta saya untuk menambahkan file "WebRole.cs" ke proyek saya.

Setelah menghapus "WebRole.cs" dari proyek saya, panggilan API Web saya mulai berfungsi kembali.

Josh Mouch
sumber
Ini berhasil untuk saya. Saya memigrasikan aplikasi Azure kembali ke penerapan VM dan setelah mengomentari konten WebRole.cs, panggilan WebAPI saya mulai berfungsi kembali.
Scott
Saya harus menghabiskan satu hari untuk ini! Mengomentari WebRole.cs berhasil - namun heran mengapa
Igorek
2

Pastikan pool aplikasi dalam mode Terpadu
Dan tambahkan yang berikut ini ke file web.config:

<system.webServer>
    .....
    <modules runAllManagedModulesForAllRequests="true" />
    .....
</system.webServer>
Rakesh
sumber
2

Dalam kasus saya, masalahnya hanya karena saya mencoba mengakses situs di

myserver.myintranet.com/mysite

Tetapi situs web yang mengikat http di IIS tidak memiliki nama host yang ditentukan dalam pengikatan. Itu telah berhasil sebelumnya dan saya tidak tahu bagaimana itu bisa meledak.

Setelah saya memasukkan myserver.myintranet.comnama host, 404 itu hilang.

Di Manajer IIS Anda masuk ke Bindings ... di panel tindakan, lalu edit pengikatan http untuk menentukan nama host.

toddmo
sumber
Bahkan saya juga menghadapi masalah yang sama. dan seperti yang Anda sarankan saya memeriksa nama host di http mengikat, dan hanya diperbarui dengan benar. Tapi masalah saya masih berlanjut. Catatan: Saya menghosting aplikasi API saya sebagai aplikasi anak. Tolong sarankan jika ada yang tahu tentang ini. contoh: "sample.example.com" adalah aplikasi utama saya dan membuat API di bawah domain ini sebagai "sample.example.com/myAPI/"
Krishna Mani
2

Jangan lupa untuk menerapkan global.asax

Adem Aygun
sumber
1

Memiliki masalah yang sama, respons 404 untuk pengontrol api web saat disajikan dari IIS tetapi semuanya berfungsi dengan baik dari VS2010. Tidak ada solusi di atas yang berhasil untuk saya. Akhirnya saya menemukan bahwa masalahnya adalah kami menambahkan dukungan WSE 3.0 untuk aplikasi dan dll Microsoft.Web.Services3 hilang di direktori aplikasi / bin. Aneh, tetapi setelah menyalin dll, pemetaan rute mulai berfungsi.

devilcius.dll
sumber
1

Bagi saya masalahnya adalah situs root dikonfigurasi untuk menggunakan kumpulan aplikasi .NET 2.0, dan aplikasi saya di dalam situs itu adalah .NET 4.5.

Saya membuat situs baru dengan kumpulan aplikasi .NET 4 dan menempatkan aplikasi saya di root itu - dan itu berfungsi dengan baik.

JuniorEbuka
sumber
1

Saya juga berjuang dengan ini. Masalah sebenarnya saya adalah bahwa saya memiliki Layanan Web ASMX yang, ketika saya memasukkan parameter ke dalam metode web dan mengujinya, maka itu akan memberi saya 404. Metode tertentu telah bekerja dengan baik di masa lalu dan tidak diubah, hanya diterbitkan ulang. Kemudian saya sampai di sini dan mencoba semua jawaban yang diposting & tidak ada yang membantu.

Solusi utama saya? Saya tahu ini drastis, tetapi saya baru saja membuat solusi Visual Studio dan proyek web baru. Pilih MVC, lalu saya melakukan "Add"> "New Item", memilih "Visual C #"> "Web" dan "Web Service (ASMX)" di bawahnya. Saya menyalin semua kode di belakang kode lama saya, lalu saya mencatat namespace yang diberikan file baru di proyek baru saya, lalu menempelkan semua kode lama saya ke file di belakang kode baru di proyek baru dan meletakkan namespace kembali seperti semula.

Kemudian saya membuat folder saya di proyek saya yang saya miliki sebelumnya menggunakan Visual Studio untuk melakukan "Add"> "New Folder", lalu menyalin kembali file saya ke dalam folder dari proyek saya yang lain menggunakan Windows Explorer, lalu mengklik kanan setiap folder di Visual Studio dan melakukan "Add"> "Existing Item ..." dan menarik item dalam folder tersebut ke folder Visual Studio proyek baru saya. Saya mereferensikan semua rakitan .NET saya lagi, setelah kedua proyek terbuka sehingga saya dapat membandingkan mana yang telah saya referensikan, sebelumnya (ada beberapa). Saya harus memberi nama proyek baru saya sedikit berbeda - pada dasarnya saya melakukan sesuatu yang sebanding dengan "GeneralWebApp" daripada "MyWebApp", misalnya - jadi saya harus melakukan "Ganti Semua" di seluruh solusi saya untuk mengganti nama itu,

Kemudian saya melakukan "Rebuild All" pada proyek tersebut, kemudian memulainya dengan tombol "Play" yang diberikan Visual Studio ketika saya mendapatkannya untuk membangun dengan benar. Ini bekerja dengan baik. Jadi saya menerbitkannya, dan semuanya baik-baik saja di server tempat saya menerbitkannya, ketika saya menjalankannya dari sana. Saya tidak punya penjelasan tentang apa yang terjadi, tapi begitulah cara saya melewatinya. Ini bukan tes yang buruk hanya untuk melihat apakah sesuatu yang dilakukan Visual Studio telah mengacaukannya.

vapcguy
sumber
1

Jika Anda hanya menempatkan folder bin di IIS (setelah membangun proyek), masalah ini juga akan terjadi. Dalam situasi ini, Anda harus menerbitkan proyek menggunakan VisualStudio, kemudian tempatkan folder yang diterbitkan ke IIS.

Emad Armoun
sumber
0

Jenis permintaan HTTP apa yang Anda buat?

Ini adalah jawaban yang agak kiri tetapi sudahkah Anda mencoba menghapus halaman kesalahan default IIS untuk 404 untuk memeriksa apa yang sebenarnya dihasilkan oleh API Anda?

Saya memiliki masalah di mana saya menginginkan metode pengontrol untuk mengembalikan 404 ketika saya mem-posting id yang salah ke sana. Saya menemukan bahwa saya selalu mendapatkan halaman IIS 404 "File atau direktori tidak ditemukan" daripada respon HTTP dari API saya. Menghapus halaman kesalahan 404 default menyelesaikan masalah.

Masalah yang berbeda tetapi Anda tidak pernah tahu itu dapat membantu;)

Oliver Picton
sumber
0

Bagian konfigurasi di file web.config ini dapat membantu seperti yang membantu saya: di bagian system.webServer:

      <security>
          <requestFiltering>
              <verbs applyToWebDAV="true">
                  <remove verb="PUT" />
                  <add verb="PUT" allowed="true" />
                  <remove verb="DELETE" />
                  <add verb="DELETE" allowed="true" />
                  <remove verb="PATCH" />
                  <add verb="PATCH" allowed="true" />
              </verbs>
          </requestFiltering>
      </security>      
Konstantin Isaev
sumber
0

Saya baru-baru ini mengalami kesalahan 404 tidak ditemukan dengan semua rute / pengontrol Api Web 2 saya. Jadi saya pergi ke server sebenarnya dan mencoba menjelajah menggunakan localhost alih-alih nama host dan mendapatkan "404.7 Not Found - Modul pemfilteran permintaan dikonfigurasi untuk menolak ekstensi file".

Posting SO ini membantu saya menyelesaikannya.

santos
sumber
0

Itu teratasi untuk saya, ketika saya mengaktifkan kotak centang untuk UrlRoutingModule-4.0:

IIS Manager> Modules> pilih UrlRoutingModule-4.0> Edit Module> centang kotak centang "Panggil hanya untuk permintaan ke aplikasi ASP.NET atau penangan yang dikelola".

Anilkumar Y
sumber
0

Saya memiliki masalah yang sama: pada mesin yang baru diinstal dengan Visual Studio 2013, proyek api web bekerja di bawah IISExpress, tetapi tidak di bawah IIS lokal. Saya mencoba semua yang bisa saya temukan, tetapi pada akhirnya masalahnya tidak perlu dengan API Web, tetapi dengan MVC: meskipun sudah diinstal, tidak ada proyek MVC yang berjalan.

Apa yang berhasil bagi saya adalah menghapus IIS (dari TAMBAH / HAPUS Fitur Windows), lalu instal ulang, lalu jalankan aspnet_regiis -i. Mungkin ini membantu orang lain.

Marian Siminescu
sumber
0

Saya menghabiskan banyak waktu mencoba banyak hal untuk akhirnya menyadari bahwa saya menambahkan aplikasi web saya bukan di Situs / Situs Web Default, tetapi di situs web lain yang terikat ke port lain. Jelas mencoba localhost pada port 80 akan memberikan 404.

guiomie
sumber
0

saya tidak melakukan apa-apa, cukup tambahkan tag ini di web.config, yang berfungsi masalah ini muncul di salah satu poin berikut

  1. Gunakan Web Api dalam proyek yang sama menggunakan bentuk MVC atau asp.net

  2. Gunakan RouteConfig dan WebApiConfig di Global.asax sebagai GlobalConfiguration.Configure (WebApiConfig.Register); RouteConfig.RegisterRoutes (RouteTable.Routes);

  3. Gunakan RouteConfig untuk 2 tujuan, bentuk asp.net menggunakan dengan friendlyurl dan mvc routing untuk routing MVC

kami hanya menggunakan tag ini di web.config, itu akan berfungsi.

<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
   .........................
</modules>
</system.webServer>
adnan
sumber
0

Mengalami masalah yang sama dengan Web API dan .Net Core Web API. Berfungsi dengan baik di VS 2017 saat men-debug, tetapi mengembalikan 404 saat dipublikasikan ke IIS 7.5. Solusi bagi saya adalah mengubah cara saya membuat situs. Alih-alih menerbitkan ke root Situs Web (dibuat dengan mengklik kanan Situs ... Tambahkan Situs Web), saya harus membuat Aplikasi (dibuat dengan mengklik kanan Situs Web ... Tambahkan Aplikasi) dan menerbitkan ke folder itu. Perhatikan bahwa untuk versi Inti, saya harus mengubah pengaturan Versi Application Pool .NET Framework ke "No Managed Code".

miked
sumber
0

Bagi saya solusinya adalah menghapus baris berikut dari file web.config saya:

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.1.3" newVersion="4.1.1.3" />
</dependentAssembly>
<dependentAssembly>
    <assemblyIdentity name="Microsoft.IdentityModel.Tokens" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" />
</dependentAssembly>

Saya perhatikan bahwa VS telah menambahkannya secara otomatis, tidak yakin mengapa

protango
sumber
0

Coba webconfg ini .. ganti "NewsApi.dll" dengan dll utama Anda!


<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\NewsApi.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
    </system.webServer>
  </location>
</configuration>
Prime By Design
sumber