Hatalı İstek - Geçersiz Ana Bilgisayar Adı IIS7


87

Web uygulamamı 8080 numaralı bağlantı noktasından vurmaya çalıştığımda aşağıdaki hatayı alıyorum

Hatalı İstek - Geçersiz Ana Bilgisayar Adı
HTTP Hatası 400. İstek ana bilgisayar adı geçersiz.

Bu sorunu nereden teşhis etmeye başlayacağımı bile bilmiyorum

Yanıtlar:


75

Bağlamanın IIS olup olmadığını kontrol ettiniz mi? (inetmgr.exe) 8080'de tüm ana bilgisayar adlarını kabul edecek şekilde kaydedilmemiş olabilir.

Örneğin, mysite.com:8080 için ayarlarsanız ve localhost: 8080'e ulaşırsanız, IIS isteği alır, ancak bununla eşleşecek bir ana bilgisayar adı bağlaması olmaz, böylece reddeder.

Bunun dışında, sunucudaki IIS günlüklerini (C: \ inetpub \ logs \ wmsvc #) kontrol etmeli ve isteğinizi görüp görmediğinizi görmelisiniz. O zaman bunun istemcinizde mi yoksa sunucunun kendisinde mi bir sorun olduğunu anlayacaksınız.


2
Benim durumumda, aşağıdaki satırı C: \ Windows \ System32 \ drivers \ etc \ ana bilgisayarıma eklemem gerekiyordu: "127.0.0.1 localhost"
chris

4
IIS Yöneticisi'nde bağlamaları nerede yapılandırırsınız?
Steve Smith

30

FWIW, herhangi bir ana bilgisayar adına / ip'e yönlendirilen isteklere izin vermek istiyorsanız, bağlamanızı şu şekilde ayarlayabilirsiniz:

<binding protocol="http" bindingInformation="*:80:*" />

IE6 ile bir VM yükleyebilmek ve ardından uygulamamın hatalarını ayıklamak için bu bağlamayı kullanıyorum.


DÜZENLEME: Hata ayıklamak için IIS Express kullanırken bu seçeneğin yapılandırma dosyası için varsayılan konum

C:\Users\{User}\Documents\IISExpress\config\applicationhost.config

2
Ayrıca, IIS Express'in, Conveyor adlı ücretsiz VS Uzantımızı kullanarak uzaktan istemlerle çalışmasını sağlayabilirsiniz (yapılandırma değişikliği içermez). Almak için Tools-> Extensions ... kullanın veya marketplace.visualstudio.com/…
Jim W, Monica'yı

26

Microsoft tarafından hazırlanan bu sayfa, yerel ağdaki diğer bilgisayarlardan IIS Server Express'e erişimin nasıl ayarlanacağını açıklamaktadır.

Kısaca:

1) yönetici ayrıcalıklarına sahip bir komut isteminden:

netsh http add urlacl url=http://[your ip address]:8181/ user=everyone

2) Gelişmiş Güvenlik Özellikli Windows Güvenlik Duvarı'nda, harici bağlantılara izin vermek için 8181 numaralı bağlantı noktası için yeni bir gelen kuralı oluşturun.

3) applicationhost.config'de, projenizin düğümünde şunu ekleyin:

<binding protocol="http" bindingInformation="*:8181:[your ip address]" />

EKLEMEYİN (başka bir cevapta önerildiği gibi):

<binding protocol="http" bindingInformation="*:8181:*" />

Yukarıdaki joker karakter bağlama, erişimimi kesti http://192.168.1.6:8181/


4
Ayrıca, Visual Studio'yu Yönetici Ayrıcalığı ile çalıştırmanız gerekir, aksi takdirde IIS Express'e bağlanamazsınız. Yönetici olarak testi tamamladığınızda, netsh http delete urlacl url=http://[your ip address]:8181/
apphost.config

1
Bilgisayarınız farklı bir dile ayarlanmışsa, "kullanıcı = herkes" başka bir şey olmalıdır. Fransızca'da user = "Tout le monde" şeklindedir. Bu yanıta bakın: stackoverflow.com/a/18856394/1317559
Yster

24

Bu yüzden, IIS Yöneticisi'ndeki web siteme gidip site bağlamalarındaki ana bilgisayar adını localhost'tan *. Hemen çalışmaya başladım.

IIS'de Site Bağlamaları


mükemmel! Laravel sitesi çalıştırmak için kullanılan bir AWS örneği için çalıştı
Vishnoo Rath

Bu, localhost üzerinde çalıştığı ancak uzak ip üzerinde çalışmadığı asp.net çekirdeği ile ilgili sorunumu çözdü, teşekkürler!
Philip

Benim durumumda işe yaradı. 100'den fazla siteye ev sahipliği yapmış olmama rağmen. ilk seferde yanıldı ve güvenlik duvarı kurallarında veya diğer çözümlerde bulamadı.
Ketan Kotak

9

İçin Visual Studio 2017ve Visual Studio 2015, IIS Expressayarları gizli saklanır .vsdizinde ve yol böyle bir şeydir .vs\config\applicationhost.config, irade işin altına gibi bağlayıcı eklemek

<bindings>
    <binding protocol="http" bindingInformation="*:8802:localhost" />
    <binding protocol="http" bindingInformation="*:8802:127.0.0.1" />
</bindings>

Sözdizimi: https://docs.microsoft.com/en-us/dotnet/api/microsoft.web.administration.binding.bindinginformation?view=iis-dotnet


2
Bu yöntemi kullanan herkes için, doğru bağlama Bilgi şablonunun: ip adresi: bağlantı noktası: ana bilgisayar başlığı olduğuna dikkat etmek önemli değil. Yani doğru uygulama: <bindings> <binding protocol="http" bindingInformation="localhost:8802:*" /> <binding protocol="http" bindingInformation="127.0.0.1:8802:*"/> </bindings>
Lionnel Afangbedjee 01

1
.Vs klasörü, proje kök klasörünüzdeki klasördür. Bu applicationhost.config
dosyasında

4

IPv6 adresine de bağlamayı unutmayın! 127.0.0.1'e localhost kullanarak bir site eklemeye çalışıyordum ve hatalı istek / geçersiz ana bilgisayar adı hatası aldım. Localhost'a ping attığımda, IPv6 etkinleştirildiğinden :: 1'e çözüldü, bu yüzden sorunu düzeltmek için ek bağlama eklemek zorunda kaldım.

IIS Site Bağlamaları


4

Bu sorunumu çözdü (kötü İngilizcem için özür dilerim):

  1. cmd'yi yönetici olarak açın ve komutu çalıştırın (Köşeli parantezler olmadan):
    netsh http add urlacl url=http://[ip adress]:[port]/ user=everyone

  2. içinde documents/iisexpress/config/applicationhost.configve (gizli) klasöründe kök proje klasöründe: .vs/config/applicationhost.config"site" etiketine satır eklemek gerek:
    <binding protocol="http" bindingInformation="*:8080:192.xxx.xxx.xxx" />

  3. "internet bilgi hizmetleri (iis) yöneticisi" ni açın
    (bulmak için: görev çubuğundaki aramaya "Pencere özelliklerini aç veya kapat" yazın ve sonucu açın ve ardından "internet bilgi hizmeti" onay kutusunu işaretleyin ve yükleyin):

    1. sol ekranda şunu tıklayın: bilgisayar adı -> Siteler -> Varsayılan Web Sitesi ve
    2. ardından sağ ekranda "Bağlama" yı tıklayın
    3. Ekle düğmesine tıklayın
    4. ihtiyacınız olanı yazın ve "Tamam" a basın.
  4. "Gelişmiş Güvenlik Özellikli Windows Güvenlik Duvarı" nı açın,

    1. sol ekranda "Gelen Kuralları" na ve ardından
    2. sağ ekranda "Yeni Kural ..." tuşuna basın
    3. bağlantı noktasını kontrol edin ve İleri'ye basın,
    4. TCP'yi ve bağlantı noktanızı kontrol edin ve İleri'ye basın,
    5. "Bağlantıya izin ver" i işaretleyin ve İleri'ye basın,
    6. tüm onay kutusunu işaretleyin ve İleri'ye basın,
    7. adı yazın ve Bitir'e basın.
  5. bitti.


3

Sorunun bu olup olmadığından emin değilim ama web uygulamasına kendi makinesinden erişmeye çalışan ve bu sorunu yaşayan herkes için:

Harici IP adresinize değil 127.0.0.1(aka localhost) ağına bağlandığınızdan emin olun .

URL'niz şey gibi olmalı http://localhost:8181/ya http://127.0.0.1:8181ve değil http://YourExternalIPaddress:8181/ .


Ek bilgi:
Bunun çalışmasının nedeni, güvenlik duvarınızın kendi isteğinizi engelleyebilmesidir. İşletim sisteminizde bir güvenlik duvarı olabilir ve (her zamanki gibi) yönlendiriciniz olabilir.

Harici IP adresinize bağlandığınızda, sanki bir yabancıymışsınız (veya bir bilgisayar korsanı), internetten size bağlanırsınız.
Bununla birlikte, yerel ana makinenize bağlandığınızda, yerel olarak kendiniz olarak bağlanırsınız ve bloğa açıkça ihtiyaç yoktur (ve tamamen engellenir).


Localhost kullanırken çalışırken, ancak makinelerin yerel IP Adresini kullanırken (çalışmaz) bu sorunu yaşıyorum. Neden özellikle IP adresinizi kullanmamayı söylediniz - bu neden işe yaramıyor - anlamak istiyorum?
Code Benzersiz olarak

1
Bir "bilgisayar korsanı" için bir web sitesine bağlanmak için kullanılan ana bilgisayar adını değiştirmek saçma bir şekilde önemsizdir.
Arafangion

@Arafangion Nerede değiştirir ve ne kazanır?
MasterMastic

@MasterMastic: Örneğin, linux üzerinde /etc/hosts.conf dosyasını düzenleyin. Windows eşdeğerine sahiptir. Ya da daha önemsiz bir şekilde, curl veya wget'e hangi ana bilgisayar adını bildireceğini söyleyin. Burada, görünüşe göre internetten gelen istekleri engellemek için "ana bilgisayar adı" na güveniyorsunuz, bu nedenle hacker'ın kazandığı şey, görünen "koruma" mekanizmanızı atlayarak kazanması gereken şeydir. IIS hala bağlantı noktasına bağlanıyor gibi görünüyor. Doğru düzeltme, ilk olarak dışarıdan erişilebilir bağlantı noktasına bağlanmamaktır.
Arafangion

@Arafangion Evet ama bu yerel bir yönlendirme. Buradaki nokta localhost, ( 127.0.0.1) 'dan bahsettiği şey değil . Tek söylediğim, harici olarak görünen IP'nize değil, ona bağlanmak. Localhost'a güvenmek yok, sadece eşanlamlı olarak kullanılıyor. Bunu daha net hale getirmek için cevabımı düzenleyeceğim.
MasterMastic

2

Visual Studio 2005/2008/2010 CMD aracını kullanabilirsiniz. Yönetici olarak çalıştırın ve yazın

aspnet_regiis -i

Sonunda uygulamamı başarıyla çalıştırabiliyorum.


2

Yerel sunucu üzerinde çalışıyorsanız veya alan adınız yoksa "Ana Bilgisayar Adı:" alanını silin. görüntü açıklamasını buraya girin


1

Yerel ana bilgisayar dosyanızı kontrol edin (örneğin C: \ Windows \ System32 \ drivers \ etc \ hosts). Benim durumumda bunu daha önce bir URL'yi bir dev kutusuna yönlendirmek için kullandım ve sonra onu unuttum. Daha sonra aynı URL'yi tekrar kullandığımda, trafik yanlış sunucuya gittiği için Kötü İstek (Geçersiz Ana Bilgisayar Adı) almaya devam ettim.


1

"Localhost" kullanarak bir web hizmetini aramaya çalıştığımda bu hatayı aldım. Bunun yerine gerçek IP'yi kullanarak düzelttim (192.168 ...)


Kazanan. Windows server 2003'teki
sorunum buydu

0

Uygulamayı yeni bir sunucuya kopyalamak için msdeploy'u kullandıktan sonra aynı hatayı gördüm. Bağlamaların hala önceki sunucunun IP adresini kullandığı ortaya çıktı. Bu nedenle, IIS bağlamalarında IP adresini iki kez kontrol edin. (Gerçekten sonra açık görünüyor, ancak kontrol etmek için hemen aklıma gelmedi).


0

Sağladığınız tam URL'yi iki kez kontrol edin. ASP.NET'te tanımlanan yol önekini kaçırdığımda bu hatayı gördüm, bu yüzden isteği nereye yönlendireceğimi bilmiyordu.


0

IIS'nin bağlantı noktanızı dinlediğinden emin olun.

Benim durumumda sorun buydu. Bu yüzden bağlantı noktamı 8083 gibi başka bir şeye değiştirmem gerekti ve bu sorunu çözdü.

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.