IISExpress uzak makinelerden 503 hatası döndürüyor


183

Yerel bir IISExpress örneğinde çalıştığım bir web sitesini yerel ağımdaki diğer bazı makinelerle / aygıtlarla test etmeye çalışıyorum. Win7 Pro kullanıyorum.

Yerel ağ segmentimdeki başka bir makineden makineme ilk kez göz atmaya çalıştığımda 400 hatası alıyorum: Ana bilgisayar adı geçersiz.

Yükseltilmiş komut isteminde aşağıdaki gibi bir komutla ACL'ye uzaktan erişim izni vermem gerektiğini anlıyorum:

netsh http add urlacl url=http://mymachinename:50333/ user=everyone

Şimdi bir 503 hizmet kullanılamıyor hatası alıyorum.

Windows Güvenlik Duvarı şu anda kapalı ve yerel IISExpress örneğime adresle göz atabiliyorum http://localhost:50333

Bu yapılandırma bulmacasının son parçası nedir?


1
Eğer göz ne olur http://mymachinename:50333/ den sizin bilgisayarınızda?
Albay Panik

1
Problem çözüldü. Vikomal
Jeff Fritz'in


3
Bu sorunu
Jim W, Monica

Yanıtlar:


270

Görünüşe göre applicationhost.config dosyasındaki bir bağlayıcı bilgi girdisi eksik.

  1. Applicationhost.config dosyanızı açın. Olası yerler:

    • %userprofile%\Documents\IISExpress\config\applicationhost.config
    • $(solutionDir)\.vs\config\applicationhost.config (VS2015)
    • Başarısız olursa, iisexpress.exeemin olmak için çıktıyı inceleyin .
  2. WebSite girişinizi bulun ve makine adınızla aşağıdaki ciltlemeyi ekleyin .

         <binding protocol="http" bindingInformation=":50333:your-machine-name" />
    
  3. IIS Express'i yeniden başlatın


9
Boşver. Visual Studio, öğe için yinelenen bir yapılandırma girdisi oluşturdu. Kaldırdım ve işe yaradı.
nuzzolilo

3
IIS Express, bu yolda her zaman yapılandırma dosyasını kullanmaz. iisexpress.exeHangi yapılandırma dosyasını kullandığını görmek için çıktıyı dikkatle okuyun .
Albay Panik

5
Anahtar nokta 3, IIS Express'i yeniden başlatın! Sistem tepsinizdeki simgeyi bulun ve yeniden başlaması için durdurun. Daha zarif bir yol olup olmadığından emin değilim. Ama bu benim için çalıştı. Teşekkürler!
Senatör

9
Her ana bilgisayar adını / ipadresi kombinasyonunu eklemek için çok
tembelseniz

4
Bir ipucu daha: IISExpress 'systray simgesine sağ tıklarsanız, yerel olarak çalıştırmakta olduğunuz tüm uygulamaları gösteren bir iletişim kutusu açacak olan "Tüm uygulamaları göster" i seçebilirsiniz. İstediğiniz uygulamaya sağ tıklayın (sol tıklamayın veya tarayıcıyı açacaktır), ardından aşağıda "Yol" ve "Yapılandırma" ifadelerini göreceksiniz. "Config" üzerine sol tıkladığınızda, yukarıda açıklandığı gibi bağlamaları eklemeniz / düzenlemeniz gereken ilgili Applicationhost.config dosyası açılır. Bu, mevcut yapılandırmayı bulmanın kolay bir yoludur.
Matt

31

Benim için işe yarayan sadece 1 şey vardı.

kullanmak *:portnumber:*iyi değildi. Evet, bunu yaptıktan ve Windows Güvenlik Duvarı'nın açık olduğundan emin olduktan sonra bağlantı noktasına bağlanabilirim, ancak yine de "503" hatası alıyorum.

Yerel olarak birkaç şeyi test ettim ve yalnızca http: // localhost'un çalıştığını keşfettim . Gerçek IP adresini (127.0.0.1 değil, örneğin 192.168.1.50) kullanmak, yerel makinede bile 503 döndürdü. Bağlamalarda gerçek ana bilgisayar adını kullanmayı denedim, ancak IIS Express başlatmayı reddetti. Bunun aslında ana bilgisayar adının nasıl çözüldüğü ile ilgili bir şey olabilir. Bunu daha fazla keşfetmedim.

Son olarak, bu yapılandırmayı kullandım:

<binding protocol="http" bindingInformation="*:53351:localhost" />
<binding protocol="http" bindingInformation="192.168.1.50:53351:*" />

Bu şekilde, kullanarak uzak bir makineden bağlanabildim http://192.168.1.50:53351.


Bu tam hatayı vurdum, ancak mevcut IP'yi yapılandırmaya zor kodlamak istemedim, çünkü değişebilir. IP ve ana bilgisayar adı parçaları üzerinde joker çalışır bulundu, bu yüzden ile sona erdi: <binding protocol="https" bindingInformation="*:44300:*" /> <binding protocol="http" bindingInformation="*:8888:*" /> edit: gerçekten SO markdown anlamaya çalıştı, ben çıktım :).
Brian Barker

19

Böyle bir konuda 3 saatten fazla zaman harcadıktan sonra kurulumumu sizinle paylaşmaya karar verdim. Yapılandırmam Windows 8'deki Web güncellemesi 4 için Visual Express 2012. Bu, MS VS'ye çalışmalardan beri (en az 8 yıl) geri döndüm ve şimdi linux kurallarından eminim. Django bu tür kurulum belgelerin arama 10 dakika götürdü.

  1. test için güvenlik duvarını kapat

    netsh advfirewall set allprofiles state off
    
  2. benim durumumdaki kurulum bağlantıları yerelIP = 192.168.1.102 (bağlantılar sayısal olmayan etki alanı içeremediğinden, mylocaldomain.com yerine aşağıda kullanın, bkz. stackoverflow ilkesi) Documents\IISExpress\config\applicationhost.config

    <bindings>
        <binding protocol="http" bindingInformation="*:53351:mylocaldomain.com" />
        <binding protocol="http" bindingInformation="*:53351:localhost" />
    </bindings>
    
  3. ISS Express start service için otomatik olarak otomatik çalıştırma ekle

    <site name="NeuronCharts" id="2" serverAutoStart="true">
    
  4. Http sunucusuna bazı garip kurallar ekleyin (bunun nesseary olup olmadığını hala bilmiyorum)

    netsh http add urlacl url=http://mylocaldomain.com:53351/ user=everyone
    
  5. IISExpress'i VS IDE'den değil el ile çalıştırın

  6. ISSExpress'in ciltleri kaydettiğini göreceksiniz
  7. çalışıyorsa tarayıcıyı çalıştır http://mylocaldomain.com:53351 , sonra güvenlik duvarı kuralı ekleyebiliriz
  8. güvenlik duvarı kuralı ekle

    netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=53351 remoteip=any action=allow
    

Yerel ağ kullanımı için yerel ağa erişmek istiyorsanız sunucunuza dış dünyadan erişmek istiyorsanız remoteip'i herhangi bir değere ayarlayın.

  1. güvenlik duvarını başlat

    netsh advfirewall set allprofiles state on
    
  2. her şeyin yerel ve genel ip üzerinde çalışıp çalışmadığını tekrar kontrol edin

Sana şans diliyorum

Rafal


3
Bu, IIS Express'in VS2013'ü Yönetici olarak çalıştırmadan Win8 ile VS813 üzerinde çalışmamasına neden oldu. IIS Express'in artık netsh komutunun bir sonucu olarak harici trafiğe açmaya çalışmasından kaynaklanıyor. Ayrıca bu trafiğe hizmet etmek için hiçbir zaman gerçekten başaramadım; Bu yanıtta netsh komutunun neden olduğu sorunu tersine çevirmek için Yönetici olarak çalışan bir Komut İstemi'nden çalıştırın: netsh http delete urlacl url=http://*:55416/(bağlantı noktasını bağlantı noktanızla değiştirin)
Chris Moschini

fwiw - Adım 4'e ihtiyacım yok (netsh çağrısı @Rafal'ın gerekli olduğundan emin değil) ve çözümümde VS2013 projelerini çalıştırmak için 2. adımda "localhost" bağlayıcısına ihtiyacım olmamasına rağmen, ön "localhost" bağlaması yerinde bırakıldığında uç çok daha hızlı yüklenir .
lukkea

Yukarıdaki talimatları izleyerek hala 503 ile sonuçlandığını buldum localhost. Ben misafir (Windows) makine adı içinde bağlamaları olması gerektiğini buldum applicationhost.configve konak (Mac) gerekli konuk makine adı eşlenmesi 127.0.0.1içinde /etc/hosts. Ancak daha sonra ana bilgisayardaki konuk makineye bir istek başarılı oldu.
Matt

5. adıma ek olarak iisexpress.exe / siteid: id komutunu kullanın; burada id, sitenizin id özniteliğinin <site id = "id"> ayarındaki değeridir, aksi takdirde 1. siteyi başlatır.
Mudit Jain

9

Sorunun, kötü bir urlacl eşlemesi ile ilgisi olduğu bulundu. Bunu anlamak için:

netsh http show urlacl 

ve şuna benzer şeyler ara http://+:80/ bağlandığınız bağlantı noktası .

Sonra kullan

netsh http delete url=<the url from the list>

Bu benim için sorunu düzeltti.


4
netsh olmalı http delete urlacl url = <listeden url>, bu benim için çalıştı teşekkürler!
sergiogx

1
Bu, msdn blogunda daha ayrıntılı olarak ele alınmıştır . Bu da benim sorunumdu.
Kevin Scharnhorst

3
Teşekkürler, tam sözdiziminetsh http delete urlacl <yoururl>
yoel halb

7

Benim için hiçbir şey işe yaramadı. Sonunda buldum iisexpress-proxy

Cevabımı gör https://stackoverflow.com/a/33623399/631527

Başka bir çözüm ngrok


İnanılmaz! Tüm diğer çözümleri denedim ve onlar da işe yaramadı. "Hatalı istek" veya "Hizmet kullanılamıyor". Çok karışık. Düğüm modülünü kurdum ve çalıştırdım, anında çalışıyor!
TetraDev

İŞLER! kutsal! Teşekkür ederim!
Ayson Baxter

ngrok ayrıca kontrol
Toolkit

1
SIMPLY ngrok ile bir cazibe gibi çalışır! Önce localhost'tan iis-proxy'ye, sonra proxy'den ngrok'a geçmek zorunda kalmak garip, ama hey, çalıştı !. Örneğin, bağlantı noktasında iisexpress'im var 3028. Koştum iisexpress-proxy 3028 to 12345ve sonra ./ngrok.exe http 12345. 😅
Reuel Ribeiro

@TetraDev, "Hatalı istek" veya "Hizmet kullanılamıyor", ngrok'tan localhost'a erişirken alınan ana bilgisayar üstbilgisinin burada
Dani Torres

3

Bana yardımcı olan, 'IISExpress' simgesini, 'Tüm uygulamaları göster'i sağ tıklamaktı. Sonra web sitesini seçip hangi aplicationhost.config kullandığını gördüm ve düzeltme mükemmel gitti.

IISExpress yapılandırması


1

Sorun, çözüm yerine web klasörü içindeki applicationhost.config dosyasını güncelleştirmektir. Çözüm yapılandırma dosyası değiştirilecek dosyadır


1

@Vikomall çözeltisinden sonra VS'yi yönetici olarak başlatmayı unutmayın. Bu benim için düzeltti.


0

Anthony Rizzolo'nun cevabı ile ilgili olarak: Windows 8.1'de şöyle yazmalıydım:

netsh http delete urlacl url=<the url from the list>

Örneğin:

netsh http delete urlacl url=http://+:8689/

0

Yukarıdaki cevapların hiçbiri benim için işe yaramadı.

Aynı hizmet için netsh'de iki giriş yaptım

netsh http show urlacl

resim açıklamasını buraya girin

Biri güçlü bir joker karakter, diğeri zayıf bir joker karakter kullanır.

Zayıf joker karakterli olanı kaldırmak işi yaptı.

Netsh bağlamındaki güçlü ve zayıf joker karakter hakkında daha fazla bilgi

UrlPrefix'in ana bilgisayar öğesi tek bir artı işaretinden (+) oluştuğunda, UrlPrefix, şeması, bağlantı noktası ve relativeURI öğeleri bağlamında olası tüm ana bilgisayar adlarıyla eşleşir ve güçlü joker kategoriye girer.

Ana bilgisayar öğesi olarak yıldız işareti (*) göründüğünde, UrlPrefix zayıf joker karakter kategorisine girer. Bu tür UrlPrefix, bir güçlü joker karakter, açık veya IP'ye bağlı zayıf joker karakter UrlPrefix ile henüz eşleştirilmemiş, belirtilen şema, bağlantı noktası ve relativeURI ile ilişkili tüm ana bilgisayar adlarıyla eşleşir. Bu ana makine belirtimi, bazı durumlarda varsayılan bir tümünü yakalama olarak kullanılabilir veya çok sayıda UrlPrefix kullanmak zorunda kalmadan URL ad alanının büyük bir bölümünü belirtmek için kullanılabilir.

https://docs.microsoft.com/en-gb/windows/desktop/Http/urlprefix-strings

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.