IIS 7.5'te barındırılan Web API'de HTTP 404 Sayfası Bulunamadı


96

Bir Web Api uygulamam var. VS 2010 hata ayıklama dev sunucusunu kullanarak test ettiğimde mükemmel çalışıyor. Ama şimdi onu IIS 7.5'e dağıttım ve uygulamaya erişmeye çalışırken bir HTTP 404 hatası alıyorum.

İşte benim web.config'im

<?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>

2
Bende de aynı sorun var. Henüz bir çözüm bulamadım, ancak keşfettiğim bir şey, IIS'de siteyi seçerseniz, İşleyici Eşlemeleri özelliğine giderseniz, * var olması gereken bir dosyaya * eşleyen statik dosyalar için bir eşleme vardır. Bu eşlemeyi kaldırdığımda ve tüm HTTP fiilleri için yeni bir eşleme eklediğimde, artık 404'ü alamıyorum, boş bir beyaz sayfayla değiştiriliyor.
Despertar

>> VS 2010 hata ayıklama dev sunucusunu kullanarak. - AKA şeytani Cassini. Bkz. Blogs.msdn.com/b/rickandy/archive/2011/04/22/… - Bu işe yaramazsa, yeni bir MVC 4 WebApi uygulaması oluşturun ve test dağıtımı - basit
RickAndMSFT

Yanıtlar:


93

Ben de bununla mücadele ediyordum. Neyse ki Steve Michelotti burada benim için işe yarayan bir çözümü belgeledi .

Günün sonunda, web yapılandırmamdaki ExtensionlessUrlHandler-Integrated-4.0 işleyicisine tüm fiilleri (fiil = "*") etkinleştirdim.

<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>

Diğerleri, WebDAV'ın etkinleştirilmesinin sorunlara neden olduğunu belirtmişlerdir. Neyse ki bu sorunla ben de karşılaşmadım.


3
Bunun için +1. Ancak IIS Yöneticisi ile Uygulamadaki İşleyici Eşleştirmelerinde bunu değiştirdim. Bir sürü fiil için açıldı. Bunu tüm fiiller (*) ve voila olarak değiştirdim. Ancak kaynağa koymak her zaman daha iyidir.
Wolf5

1
Bende de aynı sorun var ama bu değişiklikler bana yardımcı olmadı. Başka bir yapılandırma da var mı? Veya bir kütüphane referansı olabilir mi? Lütfen ayrıca bakınız: stackoverflow.com/questions/27303523/…
Babak

2
birçok kişi runAllManagedModulesForAllRequests kullanmanın performansı etkileyeceğini söylüyor (aşağıda hemant gautam'ın yanıtlarını kontrol edin). Ancak aynı hizmeti alamıyorum, bu yüzden buradaki yapılandırmayı takip ediyorum: blog.maartenballiauw.be/post/2012/12/07/… Bu bağlantı aynı zamanda WebDAV'ın etkinleştirilmesinin de sonucu etkileyebileceğine işaret ediyor
Hoàng Long


1
Benim için fiil zaten öyleydi *. Soruna hala yol açtığı *gibi çalışmasını sağlamak için yolu da değiştirmek zorunda kaldım*.
Alsty

55

Aynı sorunu yaşadım. Bu yapılandırma ayarı sorunu çözdü.

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

Http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html'de açıklandığı gibi, çözümden kaçınılmalıdır. Bunun yerine bunu kullanın. Aynı çözüm Lopsided tarafından da sağlanmaktadır. Kullanıcıların ilk çalışan çözümü uygulamaktan kaçınmalarına izin vermek için burada tutmak.

<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>

İyi çalışıyor, ancak pek de iyi bir çözüm değil. UrlRoutingModule kullanmak daha iyidir (aşağıdaki Lopsided'in cevabına bakın). britishdeveloper.co.uk/2010/06/…
Der_Meister

37

IIS, ASP.NET'ten sonra yüklenir veya etkinleştirilirse, .NET uygulamanızın çalışması için ASP.NET'i IIS ile manuel olarak kaydetmeniz gerekir.

Windows 7 ve öncesi için:

  1. Komut İstemi'ni (cmd.exe) yönetici olarak çalıştırın.
  2. Uygun .NET Framework konumuna gidin. (örneğin C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319)
  3. Aspnet_regiis.exe -i'yi çalıştırın

Windows 8 ve üzeri için:

  1. Başlangıç ​​menüsünden, "Windows özelliklerini aç veya kapat" yazın ve ilk sonucu seçin.
  2. Internet Information Services: World Wide Web Services: Uygulama Geliştirme Özellikleri'ni genişletin ve ASP.NET 4.5'i (veya .NET Framework 2.0-3.5'te projeleri desteklemeniz gerekiyorsa ASP.NET 3.5'i) seçin.
  3. Tamam'ı tıklayın.

2
Geliştirme için IIS Express'ten tam IIS'ye geçtim ve bu benim için düzeltti. Teşekkürler!
Jim Brown

1
Yukarıdaki @ JimBrown'a benzer; IIS express'ten geçiş yaptıktan sonra benim için çalıştı.
SolidRegardless

Bu benim için çözdü. Windows 7'de, yeni MVC 5 web sitesi olan Visual Studio 2015 Ent, IIS Express'ten tam IIS'ye değiştirildi.
Geoff Gunter

26

Web API uygulamasını sanal bir dizinde mi yoksa bir uygulamada mı çalıştırıyorsunuz?

Örneğin: Projemi Varsayılan Web Sitesi> SampleWebAPI altında yerel IIS'ime taşıdığımda aynı sorunu yaşadım. Bunun URLaşağıdaki gibi yönlendirmedeki değişiklikten kaynaklandığına inanıyorum :

Orijinal: localhost:3092/api/values
Taşındı: localhost/SampleWebAPI/api/values

Web API projesini farklı bir bağlantı noktasında çalışan kendi web sitesine taşırsanız işe yarıyor gibi görünüyor.

Ek not: apiWeb sitemdeki bir uygulamanın takma adı olarak ekleyerek sorunu daha da karmaşık hale getirdim ve bu da etkili URLolmasına neden oldu :

localhost:81/api/api/values - web sitesini kendi web sitesine taşıdıktan sonra bunu fark ettim

Bu nedenle, web sitem ile web api mvc proje sitesi arasında bir ayrım sağlamak istediğim global.asaxiçin, "DefaultAPI" Web API'sinin yönlendirme kurallarını olarak api/{controller}/{id}değiştirdim {controller}/{id}ve ASP.NET MVC bir'den Defaultolarak {controller}/{id}değiştirdim info/{controller}/{id}.


3
hehehe ... Ben benim app adını vermişti IISolarak apida. Bu, tüm bu deneme ve hata ayıklamalarına 2 saatten fazla neden oldu. Deneyiminizi paylaştığınız için çok teşekkür ederiz! Yeniden adlandırdım ve şimdi tekrar işime dönüyorum. : D
Leniel Maccaferri

Teşekkürler - bu benim sorunumdu! :)
Jen

Projemi 8080 portu altında barındırdığımda API çağrılarının neden başarısız olduğundan emin değilim, sadece varsayılan web sitesinin altına sanal bir dizin olarak taşımak hile yaptı :)
Kiran

14

Benim için işe yarayan tek cevap bu ...

Benzer bir sorun yaşadım ... Ne yaparsam yapayım, hiçbir şey yeniden yönlendirilmiyor ve global dosyam yok sayılıyor gibi görünüyordu. Bu cevabı bulmadan önce her şeyi bitirmeyi ciddi olarak düşündüm. Umarım bu bağlantı başka birine yardımcı olur.


Aşağıdakileri web.config dosyasına eklemek benim için çalıştı:

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

system.webServer etiketi zaten oradaydı, ancak modül etiketini buna ekledim ve ardından modüller etiketine kaldır ve ekle etiketleri ekledim .


Bu sorunu bir 2008 (R2 değil) sunucusunda buldum ve bu benim için çalışan tek çözümdü. Ayrıca, bunu uygulama havuzunu "entegre" moda ayarlamakla birleştirmek zorunda kaldım.
Zoomzoom

11

Kontrol edilecek birkaç nokta:

  1. .NET Framework 4'ün kurulu olduğundan emin olun.
  2. Web siteniz ve sanal dizininiz (varsa) için .NET Framework'ün 4. sürümünün seçildiğinden emin olun.
  3. MVC'yi yüklediğinizden veya bin dizininizde uygun DLL'lere sahip olduğunuzdan emin olun.
  4. ASP.NET 4.0 web hizmeti uzantılarına izin vermeniz gerekebilir
  5. Uygulamayı kendi uygulama havuzuna koyun.
  6. Dizinin en az "Yalnızca Komut Dosyaları" yürütme izinlerine sahip olduğundan emin olun.

Aynı IIS sunucusunda çalışan diğer 4 normal web uygulamam var ve hepsi .net framework 4 kullanıyor. Yani bu 4 noktadan hangisine gerek yok? mvc uygulamamı yayınladığımda, konuşlandırılabilir bağımlılıkları ekledim ve bin dizinimde olması için ASP.NET MVC ekledim
Armand

@Armand # 1 yapmışsınız gibi geliyor. # 2 hala gerekli. Burada açıklandığı şekilde yaptıysanız, konuşlandırılabilir bağımlılıklar eklemek: haacked.com/archive/2011/05/25/bin-deploying-asp-net-mvc-3.aspx , yukarıdaki 3 numaralı maddeye dikkat etmelisiniz. # 4 gerekli olabilir veya olmayabilir, ancak ne zaman ve gerekmediğini size söyleyecek bilgim olmasa da.
Joe Schrag

9

Benzer bir problemim vardı. Web.config dosyamda doğru ayarlara sahiptim ancak uygulama havuzunu Entegre mod yerine Klasik modda çalıştırıyordum

ekran görüntüsü


7

Bu sorun aşağıdaki nedenlerle de olabilir

1. Web.Config içinde

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

2. Web API'nin dağıtıldığı sunucudaki bin klasöründe aşağıdakilerin bulunduğundan emin olun

  • System.Net.Http

  • System.Net.Http.Formatting

  • System.Web.Http.WebHost

  • System.Web.Http

Web API paketleri geliştirme makinesinde Nuget aracılığıyla yüklendiği için, yayınlama Visual Studio üzerinden yapılıyorsa, bu derlemeler varsayılan olarak bin klasörüne kopyalanmaz. Yine de bu dosyaların Visual Studio yayımlamasının bir parçası olarak kullanılabilir olmasını istiyorsanız, bu Derlemeler için CopyLocal öğesini True olarak ayarlamanız gerekir.

Sadish Kumar.V


Sunucuda MVC kurulu değilse bu DLL'ler gereklidir. Benim durumumda, API'leri çağırmaya çalışırken boş bir sayfa görüyordum. DLL'leri eklemek benim için manuel olarak çalıştı. Teşekkürler!!
Vipul bhojwani

Ana yayın klasörüne System.Net.Http ekledikten sonra sorunum çözüldü, benimki Asp.net Core
çözümüydü

6

Buna dayanarak SO cevap , sadece değişim gerekiyordu path="*."için path="*"eklenen için ExtensionlessUrlHandler-Integrated-4.0de configuration>system.WebServer>handlersiçinde benimweb.config

Önce:

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

Sonra:

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

Çok teşekkür ederim Greg, bu aptal yol yüzünden beni öldürmek üzereydim = "*." ama şimdi, bu sefil noktayı bıraktıktan sonra, her şey mükemmel şekilde çalışıyor! Çok teşekkür ederim!
Junior Silva

5

Ben de bu problemle karşılaştım. Uygulama Havuzları> Uygulama Havuzu Adı'na giderek sorunu çözdüm ve .NET Framework'ü v.2.0.50727'den v4.0.30319'a değiştirdim.


1
Bunu ben de kendim keşfettim. Cevabınızı kaçırmak kolay olduğu için oylama. Uygulamam için bir site oluşturduğumda, IIS benim için otomatik olarak .NET v2.0 olarak ayarlanmış bir uygulama havuzu oluşturdu !! Neden neden neden?? :)
Mike Taverne

4

Dosya Yayınlama Seçeneğini "Yayınlama sırasında ön derleme" yi devre dışı bırakmak zorunda kaldım.


Ve bunu nerede yaparsınız?
vapcguy

1
Projeye sağ tıkladığınızda ve Yayınla'yı seçtiğinizde görünen bir iletişim kutusundadır. Öyle görünüyor bu
Pakman

3

Microsoft'tan resmi düzeltme var: http://support.microsoft.com/kb/980368

<Module runAllManagedModulesForAllRequests = "true"> kullanılmasını kesinlikle ÖNERMİYORUM. Bu, tüm isteklerin (hatta .jpg, .css, .pdf, vb.) Tüm kayıtlı HTTP modülleri tarafından işlenmesine yol açar. İki olumsuz an vardır: a) donanım kaynaklarına ek yük; b) http modülleri yeni içerik türünü işleyeceği için olası hatalar.


1
Teşekkürler bu kadar çok! Diğer her şeyi denedim ve onu düzelten tek şey buydu.
Oran Dennison

Aynısı burada, bu yanıtı eklediğiniz için çok teşekkür ederim! Sorunumun çözümü buydu!
Octavio Garbarino

2

Projeme "WebRole.cs" dosyası eklememi söyleyen bir Windows Azure eğitimini izledikten sonra Web API'den 404 yanıt almaya başladım.

Projemden "WebRole.cs" dosyasını kaldırdıktan sonra, Web API çağrılarım yeniden çalışmaya başladı.


Bu benim için çalıştı. Bir Azure uygulamasını bir VM dağıtımına geri taşıdım ve WebRole.cs içeriğini yorumladıktan sonra WebAPI çağrılarım yeniden çalışmaya başladı.
Scott

Bunun için bir gün geçirmiş olmalıyım! Yorumlarında WebRole.cs çalıştı - harikası neden ancak
Igorek

2

Lütfen uygulama havuzunun Entegre modda olduğundan emin olun ve
aşağıdakileri web.config dosyasına ekleyin:

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

2

Benim durumumda sorun, siteye şu adresten erişmeye çalışmamdı.

myserver.myintranet.com/mysite

Ancak IIS'de http için web sitesi bağlaması bağlamada belirtilen ana bilgisayar adına sahip değildi. Daha önce işe yaramıştı ve bunun nasıl uçup gittiği hakkında hiçbir fikrim yok.

myserver.myintranet.comAna bilgisayar adını girdikten sonra 404 gitmişti.

IIS Yöneticisinde , eylemler bölmesinde Bağlamalar ... öğesine gidip ana bilgisayar adını belirtmek için http bağlamasını düzenlersiniz.


Ben bile aynı sorunla karşı karşıyayım. ve önerdiğiniz gibi, ana bilgisayar adını http bağlamada kontrol ettim ve yalnızca düzgün şekilde güncellendi. Ama yine de sorunum devam ediyor. Not: API uygulamamı bir alt uygulama olarak barındırdım. Lütfen bu konuda bir fikri olan varsa önerin. ör: "sample.example.com" benim ana uygulamam ve bu etki alanı altında "sample.example.com/myAPI/" olarak bir API oluşturdu
Krishna Mani


1

Aynı sorun vardı, IIS'den sunulduğunda web api denetleyicileri için 404 yanıtı vardı, ancak her şey VS2010'dan iyi çalıştı. Yukarıdaki çözümlerin hiçbiri benim için işe yaramadı. Sonunda, sorunun uygulama için WSE 3.0 desteğini eklediğimizi ve uygulamanın / bin dizininde Microsoft.Web.Services3 dll'sinin eksik olduğunu buldum. Garip ama dll'yi kopyaladıktan sonra rota haritası çalışmaya başladı.


1

Benim için sorun, kök sitenin bir .NET 2.0 uygulama havuzunu kullanacak şekilde yapılandırılmış olması ve bu sitedeki uygulamamın .NET 4.5 olmasıydı.

NET 4 uygulama havuzuna sahip yeni bir site oluşturdum ve uygulamamı bunun köküne yerleştirdim - ve bu iyi çalıştı.


1

Bununla da mücadele ettim. Asıl sorunum, bir web yöntemine bir parametre girip test ettiğimde bana 404 verecek bir ASMX Web Hizmetine sahip olmamdı. Belirli yöntem geçmişte iyi çalışıyordu ve değiştirilmemişti, sadece yeniden yayınlandı. Sonra buraya geldim ve gönderilen tüm cevapları denedim ve hiçbir şey yardımcı olmadı.

Nihai çözümüm mü? Bunun çok zor olduğunu biliyorum, ancak yeni bir Visual Studio çözümü ve web projesi oluşturdum. MVC seçildi, sonra bir "Ekle"> "Yeni Öğe" yaptım, bunun altında "Görsel C #"> "Web" ve "Web Hizmeti (ASMX)" seçtim. Tüm eski arka plan kod kodumu kopyaladım, sonra yeni projemde yeni dosyaya verdiği ad alanını not aldım, ardından eski kodumun tamamını yeni projedeki yeni arka plan kod dosyasına yapıştırdım ve ad alanını koydum eskisine geri dönüyordu.

Ardından, Visual Studio'yu kullanmadan önce "Ekle"> "Yeni Klasör" yapmak için sahip olduğum klasörlerimi oluşturdum, ardından dosyalarımı Windows Gezgini'ni kullanarak diğer projemdeki klasörlere kopyaladım, ardından her bir klasöre sağ tıkladım Visual Studio ve "Ekle"> "Mevcut Öğe ..." yaptım ve bu klasörlerdeki öğeleri yeni projemin Visual Studio klasörlerine çektim. Tüm .NET derlemelerime tekrar başvurdum, her iki projeyi de açık tuttum, böylece daha önce hangi projelere başvurduğumu karşılaştırabilirdim (birkaç tane vardı). Yeni projeme biraz farklı bir isim vermek zorunda kaldım - temelde, örneğin "MyWebApp" yerine "GeneralWebApp" ile karşılaştırılabilir bir şey yaptım - bu yüzden bu ismi değiştirmek için tüm çözümümde "Tümünü Değiştir" yapmam gerekti.

Daha sonra projede bir "Tümünü Yeniden Oluştur" yaptım, ardından Visual Studio'nun doğru şekilde inşa etmesini sağladığımda verdiği "Oynat" düğmesiyle başlattım. İyi çalıştı. Ben de yayınladım ve yayınladığım sunucuda her şey yolundaydı, oradan çalıştırdım. Ne olduğuna dair bir açıklamam yok, ama bu şekilde aştım. Visual Studio'nun yaptığı bir şeyin onu alt üst edip etmediğini görmek kötü bir test değil.


1

Eğer yerleştirirseniz sadece bin klasörü (proje inşa sonra) IIS'de bu sorun da ortaya edilecektir. Bu durumda , projeyi VisualStudio kullanarak yayımlamanız , ardından yayımlanan klasörü IIS'ye yerleştirmeniz gerekir.


0

Ne tür bir HTTP isteği yapıyorsunuz?

Bu biraz sol alanda bir cevaptır, ancak API'nizin gerçekte ne döndürdüğünü kontrol etmek için 404 için IIS varsayılan hata sayfasını kaldırmayı denediniz mi?

Yanlış kimliği POST yaptığımda bir denetleyici yönteminin 404 döndürmesini istediğim bir sorun yaşadım. API'mden HTTP yanıtı yerine her zaman IIS 404 "Dosya veya dizin bulunamadı" sayfasını aldığımı fark ettim. Varsayılan 404 hata sayfasının kaldırılması sorunu çözdü.

Farklı bir sorun ama yardımcı olabileceğini asla bilemezsiniz;)


0

Web.config dosyasındaki bu yapılandırma parçası bana yardımcı olabilir: system.webServer bölümünde:

      <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>      

0

Son zamanlarda tüm Web Api 2 yolları / denetleyicilerimde 404 bulunamadı hatası aldım. Bu yüzden gerçek sunucuya gittim ve ana bilgisayar adı yerine localhost kullanarak göz atmaya çalıştım ve "404.7 Bulunamadı - İstek filtreleme modülü dosya uzantısını reddedecek şekilde yapılandırıldı" mesajını aldım.

Bu SO gönderisi çözmeme yardımcı oluyor.


0

UrlRoutingModule-4.0 için onay kutusunu etkinleştirdiğimde benim için çözüldü:

IIS Yöneticisi> Modüller> UrlRoutingModule-4.0> Modülü Düzenle'yi seçin> "Yalnızca ASP.NET uygulamalarına veya yönetilen işleyicilere yönelik istekler için çağır" onay kutusunu işaretleyin.


0

Aynı sorunu yaşadım: Visual Studio 2013 ile yeni yüklenen bir makinede web api projesi IISExpress altında çalışıyordu, ancak yerel IIS altında çalışmıyordu. Bulabildiğim her şeyi denedim, ancak sonuçta sorun Web API ile gerekli değildi, ancak MVC ile: kurulu olmasına rağmen hiçbir MVC projesi çalışmıyordu.

Benim için işe yarayan şey, IIS'yi kaldırmak (Windows Özelliklerini EKLE / KALDIR), ardından yeniden yüklemek ve ardından aspnet_regiis -i'yi çalıştırmaktı. Belki bu başka birine yardımcı olur.


0

Sonunda web uygulamamı Siteler / Varsayılan Web Siteleri'ne değil, başka bir bağlantı noktasına bağlı başka bir web sitesine eklediğimi fark etmek için birçok şeyi denemek için çok zaman harcadım. Açıkçası, 80 numaralı bağlantı noktasında localhost'u denemek 404 verecektir.


0

hiçbir şey yapmıyorum, sadece bu etiketi web.config dosyasına ekleyin, bu sorunun çalışması aşağıdaki noktalardan birini ortaya çıkar

  1. MVC veya asp.net formlarını kullanarak Web Api'yi aynı projede kullanın

  2. Global.asax içinde RouteConfig ve WebApiConfig'i GlobalConfiguration.Configure (WebApiConfig.Register) olarak kullanın; RouteConfig.RegisterRoutes (RouteTable.Routes);

  3. RouteConfig'i 2 amaç için kullanın, MVC yönlendirmesi için friendlyurl ve mvc yönlendirme ile asp.net formları kullanın

bu etiketi web.config'de kullanıyoruz, işe yarayacak.

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

0

Web API ve .Net Core Web API ile aynı sorunla karşılaştık. VS 2017'de hata ayıklama sırasında iyi çalıştı, ancak IIS 7.5'e yayınlandığında 404 döndürüldü. Benim için çözüm, siteyi oluşturma biçimimi değiştirmekti. Bir Web Sitesinin kökünde yayınlamak yerine (Siteler ... Web Sitesi Ekle'ye sağ tıklanarak oluşturulur), bir Uygulama (bir Web Sitesine sağ tıklayarak oluşturulmuş ... Uygulama Ekle) ve o klasöre yayınlamalıydım. Çekirdek sürümü için, Uygulama Havuzu .NET Framework Sürümü ayarını "Yönetilen Kod Yok" olarak değiştirmem gerektiğini unutmayın.


0

Benim için çözüm, web.config dosyamdan aşağıdaki satırları kaldırmaktı :

<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>

VS'nin bunları otomatik olarak eklediğini fark ettim, nedenini bilmiyorum


0

Bu webconfg'yi deneyin .. "NewsApi.dll" dosyasını ana dll'nizle değiştirin!


<?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>

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.