VS2010 projesine harici erişim için IIS Express'i yapılandırma


104

VS2010'da bir proje geliştiriyorum ve sitemi IIS Express aracılığıyla yerel olarak görüntüleyebiliyorum. Ağ üzerinden harici erişimi etkinleştirmek istiyorum.

Tüm araştırmalarım beni şu blog girişine gönderdi: http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx , bu yararlı ama işe yarıyor visual studio'da başlatılan bir proje için bağlamaların nasıl yapılandırılacağını göstermiyor gibi görünüyor (ekran görüntülerinde ekranı bulamıyorum ve applicationhost.config dosyasında bağlama bilgilerini düzenledim, ancak siteyi şuradan çalıştırdığımda yansıtılmıyor gibi görünüyor. görsel stüdyo).


10
lütfen Scott Hanselman blog gönderisini okuyun hanselman.com/blog/…
balexandre

Yanıtlar:


137

1 applicationhost.config dosyasını (belgelerinizdeki IISExpress klasöründe bulunur) düzenledikten sonra, site bağlamalarınız aşağıdaki gibi görünmelidir:

<bindings>
  <binding protocol="http" bindingInformation="*:8080:*" />
</bindings>

Ciltler üç bölümden oluşur. Öncelikle bir IP adresi veya listesi veya bu durumda olduğu gibi bir joker karakter. İkinci olarak bağlantı noktası numarası ve üçüncü olarak bir ana bilgisayar adı veya liste veya joker karakter ( Hostbaşlığa göre filtreleme için ). Geliştirme amacıyla, büyük olasılıkla benzersiz bir bağlantı noktası kullanacağınız için bir joker karakter burada en uygun olanıdır.

2 Non-localhost bağlama kullandığınız için ek izinler gereklidir. VS'yi yönetici olarak çalıştırabilirsiniz veya tercihen gerekli izinleri vermek için URL ACL'leri eklemelisiniz . Aşağıdaki örnekte herkese izin verilmiştir, ancak kendi kullanıcı adınızı kullanabilirsiniz.

Not:urlacl zorunluluktur tam bağlayıcı maç. Dolayısıyla, urlaclfor http://*:8080, bir bağlamaya izin verir *:8080:*, ancak *:8080:localhostikincisi birincinin alt kümesi olsa bile , bir bağlanmasına izin vermez . bu, bir joker karakter kullanmak yerine, ana bilgisayar başlıklarını listelerseniz applicationhost.config, urlaclher biri için bir eşleşme eklemeniz gerektiği anlamına gelir .

Harici trafik için HTTP.sys'yi yapılandırma adımları, bir siteyi ayrılmış bir bağlantı noktası kullanacak şekilde ayarlamaya benzer. Windows 7 veya Windows Vista'da, yükseltilmiş bir komut isteminden aşağıdaki komutu çalıştırın:

netsh http add urlacl url=http://*:8080/ user=DOMAIN\username

Windows XP'de, yükseltilmiş bir komut isteminden aşağıdaki komutu çalıştırın:

httpcfg set urlacl /u http://*:8080/ /a D:(A;;GX;;;WD)

Not 2 VS'yi yönetici olarak çalıştırmak veya ACL girişleri eklemek sorununuzu çözmezse, komut satırından IIS Express'i çalıştırın ve herhangi bir bağlayıcı kayıt hatası mesajı olup olmadığını kontrol edin. Komut satırından başlamak için şu komutu verin:

iisexpress.exe /site:"your-site-name"

3 Son olarak, uygun güvenlik duvarı girişlerine ihtiyacınız olacak. Bunun için "Gelişmiş Güvenlik Özellikli Windows Güvenlik Duvarı" konsolunu kullanmak en kolayıdır.

"Gelen Kuralları" altında "Yeni Kural ..." öğesini seçin.

  • Kural Türü "Özel" dir.
  • Program Hizmetler-> Özelleştir ...-> Yalnızca hizmetlere uygula'dır. (IIS Express bir hizmet olmasa da kullandığı HTTP çoklayıcıdır).
  • Protokol TCP'dir
  • Belirli Bağlantı Noktaları: Tüm IIS Express bağlantılarınız için tüm bağlantı noktalarını listeleyin. İstediğiniz zaman bu kurala geri dönebilir ve bağlantı noktaları ekleyebilirsiniz. (Bu yorucu hale gelirse, 40000-65534Visual Studio tarafından kullanılan tüm aralığı kapsayan bir aralık ekleyebilirsiniz , ancak bunun daha az güvenli olduğunu unutmayın).
  • Eylem "Bağlantıya izin ver"
  • Profil aşağıdakilerden biri olacaktır. Şüpheniz varsa, "Alan + özel" i seçin.
    • "Etki Alanı", Sizinki kurumsal bir masaüstü ise ve yalnızca yerel etki alanında çalışacaksa
    • "Etki Alanı + Özel" Sizinki kurumsal olmayan bir ortamda özel bir geliştirme makinesi veya evden çalışırken de çalışması gereken kurumsal bir dizüstü bilgisayarsa.
    • Özel olmayan ağlarda gösterimler yapmanız gerekiyorsa "Etki Alanı, Özel ve Genel".
  • Ad, "IIS Express Dev Server" gibi bir şey olmalıdır

12
@ user578913 Sonunda, çalışan IIS Express görev çubuğunu açıp üzerine tıklayarak ve ardından yapılandırma dosyasına giden bağlantıya tıklayarak doğru applicationhost.config dosyasını buldum. Bağlantı noktasını ikinci satırda 1063 olarak ayarladım, çünkü ilk satır bu şekilde ayarlanmıştı. Komut satırınızı çalıştırdınız ve her şey yolunda görünüyordu. Ben giderken makine-name veya makine-name: 1063 ağdaki başka bir makineden, hala hiçbir şey olsun.
snumpy

15
Tamam, Visual Studio bir bağlantı noktası (8080 dışında) atadığından, Windows Güvenlik Duvarı onu engelliyordu. Windows Güvenlik Duvarı'nı kapattıktan sonra (muhtemelen bağlantı noktasını açabilirdim, ancak güvenli bir ağdayım) ve makine adı yerine makinemin IP'sini kullanarak işe yaradı. Teşekkürler. Oy verirdim, ancak henüz temsilcim yok = (
snumpy

3
Evet, Windows Güvenlik Duvarı'nın açık olması gerekiyorsa, 8080 numaralı TCP bağlantı noktasını (veya kullandığınız şeyi) açıkça eklersiniz. Windows 7'de başlangıçta bağlantı noktasını "IIS Express Worker Process" e atamayı denedim. Ama çalışmadı. "Yeni Kural" seçeneğini kullanmam ve 8080 numaralı bağlantı noktasına izin vermem gerekiyordu. Profil seçimi (Etki Alanı, Özel, Genel) da önemlidir.
Gautam Jain

2
Kendine Not: Erişim Reddedilirseniz, Visual Studio'yu Yönetici Olarak Çalıştırın .
nVentimiglia

3
VS2015 itibariyle, dosya konumu C:\<Path\To\Solution>\.vs\config\applicationhost.config. (Teşekkürler, @Talon)
snumpy

29

Bu konuda da saatler harcadım, Android Xoom'umdan win7 dev makineme göz atmaya çalıştım, böylece oluşturduğum yeni bir asp.net web uygulamasını test edebildim. Tek yaptığım, IISExpress'in applicationhost.config dosyasını yeni sitem için PC HostName'den PC'nin mevcut IP adresine değiştirmekti.

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

-e

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

Bunu yaptıktan ve IISExpress'i yeniden başlattıktan sonra ... dev-Lee makineme göz atabildim ve Xoom'umdan uygulamamı görebildim!


10
Tüm bu çözümlerle elde ettiğim tek şey bir 400 - Kötü İstek hatasıdır. Baska öneri?
Krumelur

2
@Krumelur, doğru applicationhost.config dosyasını düzenlediğinizden emin olun. Belgelerim klasöründeki.
Codler

14

IIS Express'in applicationhost.config dosyasını düzenleyerek birden çok bağlama adresi ekleyebiliriz

<bindings>
   <binding protocol="http" bindingInformation="*:62217:localhost" />
   <binding protocol="http" bindingInformation="*:62217:192.168.0.5" />
   <binding protocol="http" bindingInformation="*:62218:192.168.0.5" />
</bindings>

Artık IP adresini kullanarak lan'dan web sitesine erişebiliriz.

Yerel sitelere IIS Express kullanarak Lan'den erişim


6

Visual Studio 2013 SP1 ve üzeri (2015), "Sunucu ayarlarını tüm kullanıcılara uygula (proje dosyasında sakla)" ayarını içerir. Bu, varsayılan olarak etkindir. Visual Studio etkinleştirildiğinde, IIS Express'i farklı bir yapılandırma dosyası kullanmasını sağlayan komut satırı bağımsız değişkenleriyle başlatır. 'Applicationhost.config' dosyasının konumu, '.vs \ config' içindeki proje dizininin altındadır.


1
Evet, benim durumumdaki sorun buydu - Yanlış bir dosyayı düzenlemeye çalıştım. Olduğu gibi, tepsi simgesine tıklayarak, tüm uygulamaları listeleyerek ve sizin. Yapılandırma dosyasının yolu aşağıya yazılacaktır. .Vs \ config
içindeydim

1
Evet, benim için aynı. Çok teşekkür ederim.
Vas


1

Visual Studio ile çalışıyorsanız, IP Adresi üzerinden IIS-Express'e erişmek için şu adımları izleyin:

  1. Ana IP adresinizi alın: ipconfigWindows Komut Satırında
  2. GoTo $ (SolutionDir) .vs \ config \ applicationHost.config
  3. Bul
    <site name="WebApplication3" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:\Users\user.name\Source\Repos\protoype-one\WebApplication3" /> </application> <bindings> <binding protocol="http" bindingInformation="*:62549:localhost" /> </bindings> </site>
  4. Ekle: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    IP Adresinizle
  5. Visual Studio'nuzu Yönetici haklarıyla çalıştırın ve her şey çalışmalıdır
  6. Uzaktan bağlanmayı denerseniz belki bazı güvenlik duvarı sorunlarına bakın

İpucu, Visual Studio'nun kendi applicationHost.config dosyasına sahip olmasıdır!


0

Bunu Visual Studio 2012'den çalıştırmak için çok sorun yaşadım, 404 hatadan 503 hataya geçtim. Sonunda benim için işe yarayan şey, IIS Express yapılandırmasındaki ilgili tüm yapılandırmayı silmekti ...

"\Program Files (x86)\IIS Express\appcmd.exe" list site
"\Program Files (x86)\IIS Express\appcmd.exe" delete site xxx
"\Program Files (x86)\IIS Express\appcmd.exe" delete site yyy

Ardından VS'deki web projemdeki özellikler sayfasından yeni bir sanal dizin oluşturdum ancak sanal dizini oluşturmadan önce ana bilgisayar adını http: // myhost: 80 / olarak değiştirdim ve ardından sanal dizin oluştur düğmesine bastım. Daha önce ana bilgisayar adının 'localhost' olması gerektiğini söyleyen hatalar alıyordum ama bu sefer olmadı. Ve ondan sonra işe yaradı.

Kısacası, önce mevcut yapılandırmayı temizleyin ve yeniden başlayın.


-2

Harici alan adınız "name.mydyndns.com" ise, şunu yazmanız gerekir:

<binding protocol="http" bindingInformation="*:name.mydyndns.com" />

Bu, Windows 2003 Server ve IIS 7.5 Express üzerinde çalışır.


-3

Ekran görüntüsü

IIS üzerindeki uygulama havuzunda "32-Bit Uygulamaları Etkinleştir" seçeneğini "true" olarak ayarlayın.


Bunun aslında soruyu ele aldığından emin değilim. Bunu başka bir soruya mı göndermek istediniz?
ckittel
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.