IIS Express'te uzak istekleri nasıl etkinleştirebilirim? Scott Guthrie bunun mümkün olduğunu yazdı ama nasıl olduğunu söylemedi.
IIS Express'te uzak istekleri nasıl etkinleştirebilirim? Scott Guthrie bunun mümkün olduğunu yazdı ama nasıl olduğunu söylemedi.
Yanıtlar:
IIS ekip sitesinde artık IIS Express'te uzak bağlantıların nasıl etkinleştirileceğini açıklayan bir blog yazısı var . İşte bu yazının ilgili kısmı:
Vista ve Win7'de, bir yönetim isteminden aşağıdaki komutu çalıştırın:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
XP için, önce Windows XP Service Pack 2 Destek Araçları'nı yükleyin. Sonra bir yönetim isteminden aşağıdaki komutu çalıştırın:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
netsh
bağlantılara izin verme komutu var mı ?
user={PARAM_USER}
kendi dilinizde olacaktır.
user=todos
yerine kullanın user=everyone
.
Yapmanız gerekebilecek üç değişiklik var.
.config
dosyaya. Tipik:
$(solutionDir)\.vs\config\applicationhost.config
%userprofile%\My Documents\IISExpress\config\applicationhost.config
Sitenizin bağlayıcı öğesini bulun ve ekleyin
<binding protocol="http" bindingInformation="*:8080:*" />
netsh http add urlacl url=http://*:8080/ user=everyone
everyone
Windows grubu nerede . "Tout le monde" gibi boşlukları olan gruplar için çift tırnak kullanın.
Windows güvenlik duvarı üzerinden IIS Express'e izin verin.
Başlat / Gelişmiş Güvenlik Özellikli Windows Güvenlik Duvarı / Gelen Kuralları / Yeni Kural ...
Program
%ProgramFiles%\IIS Express\iisexpress.exe
VEYA Bağlantı Noktası 8080 TCP
Şimdi başladığınızda iisexpress.exe
,
"Merhaba dünya" uygulaması "/" sitesi için "http: // *: 8080 /" başarıyla kaydedildi
users=everyone
, netsh
(ikinci adım) parametresi 1789 hatasına neden olabilir. Çözüm, everyone
kendi dilinizde karşılık gelen grup adına çevirmektir .
Project Url
ana bilgisayar adı için bir yıldız işareti girersem hata verir. Başka bir şey girersem, yeni bir sanal dizin oluşturmaya çalışır. Application.config dosyasındaki girdiye bağlanmaz.
bindingInformation="*:8080:hostname"
ve 2. adımda url=http://hostname:8080/
kullanmanız ve Web sekmesindeki Visual Studio web projesi özelliklerinizde Proje URL'si olarak ayarlayın http://hostname:8080/
. *
Zaten bir tane oluşturduysanız urlacl'ı silin ; her ikisine sahipseniz işe yaramaz. Son olarak, web tarayıcınızda girdiğiniz URL'nin yerel ana bilgisayara değil, ana makine adına başvurması gerekir.
<binding protocol="http" bindingInformation="*:8080:localhost" />
Birkaç ay önce bu iş akışını denerken aynı sorunlarla karşılaştığımı hatırlıyorum.
Bu yüzden özellikle bu tür bir senaryo için basit bir proxy yardımcı programı yazdım: https://github.com/icflorescu/iisexpress-proxy .
IIS Express Proxy'yi kullanarak her şey oldukça basit hale gelir - “netsh http add urlacl url = vaidesg: 8080 / user = herkes” veya “applicationhost.config” ile uğraşmanıza gerek yoktur.
Sadece komut isteminde bunu yayınlayın:
iisexpress-proxy 8080 to 3000
… Ve sonra uzak aygıtlarınızı http: // vaidesg: 3000'e yönlendirebilirsiniz .
Çoğu zaman daha basit IS iyidir.
İisexpress-proxy bulana kadar hiçbir şey benim için işe yaramadı .
Komut istemini yönetici olarak açın, ardından çalıştırın
npm install -g iisexpress-proxy
sonra
iisexpress-proxy 51123 to 81
Visual Studio projenizin localhost: 51123'te açıldığını ve xxxx: 81 harici IP adresinden erişmek istediğinizi varsayarsak
Düzenleme: Şu anda kullanıyorum ngrok
Buna bir tezat olarak:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Bu yalnızca Windows'un İngilizce sürümlerinde çalışır. Yerelleştirilmiş bir sürüm kullanıyorsanız, "herkes" i başka bir şeyle değiştirmeniz gerekir, örneğin:
Aksi takdirde bir hata alırsınız (SDDL oluşturma başarısız, Hata: 1332)
İyi bir kaynak Geliştirme Süresinde SSL ile çalışmak Scott Hanselman'ın IISExpress'i ile daha kolaydır .
Neyin peşindesiniz, IIS Express'in 80 numaralı bağlantı noktasından harici olarak hizmet vermesini sağlama bölümü
Visual Studio ile çalışıyorsanız, IP-Adress üzerinden IIS-Express'e erişmek için şu adımları izleyin:
ipconfig
Windows Komut SatırındaGoTo
$(SolutionDir)\.vs\config\applicationHost.config
bulmak
<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>
Ekle:
<binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
IP Adresinizle
Visual Studio Professional 2015'te "Keyoti by Conveyor" kurulumu ile çözdüm. Konveyör, harici talebi etkinleştiren bir port (45455) ile bir UZAKTAN adresi (IP'niz) oluşturur. Misal:
Konveyör, ağınızdaki harici tabletlerden ve telefonlardan veya Android emülatörlerinden web uygulamaları ( http://10.0.2.2:<hostport>
)
Adımlar aşağıdaki bağlantıdadır:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
Albay Panic'in cevabını denediyseniz ancak Visual Studio'da çalışmıyorsa, şunu deneyin:
<binding />
IIS Express yapılandırmanıza bir tane daha ekleyin
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
Son olarak, Visual Studio'yu Yönetici olarak çalıştırmalısınız
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.
Hem http hem de https ile uzaktan erişimi etkinleştirmek için Windows 10 için Visual Studio 2015 ile yaptığım şey:
İlk adım uygulamanızı dahili IP adresinize bağlamaktır. Adresi almak için cmd
-> komutunu çalıştırın ipconfig
. Dosyayı açın ve şöyle bir /{project folder}/.vs/config/applicationhost.config
şey bulana kadar aşağı kaydırın:
<site name="Project.Web" id="2">
<application path="/">
<virtualDirectory path="/" physicalPath="C:\Project\Project.Web" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:12345:localhost" />
</bindings>
</site>
Altına iki yeni cilt ekleyin bindings
. İsterseniz HTTPS'yi de kullanabilirsiniz:
<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />
Güvenlik duvarınıza aşağıdaki kuralı ekleyin, cmd
yönetici olarak yeni bir istem açın ve aşağıdaki komutları çalıştırın:
netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=12345 profile=private remoteip=localsubnet action=allow
netsh advfirewall firewall add rule name="IISExpressWebHttps" dir=in protocol=tcp localport=44300 profile=private remoteip=localsubnet action=allow
Şimdi Visual Studio'yu başlatın Administrator
. Web projeleri proje dosyasına sağ tıklayın ve seçin Properties
. Git Web
sekmesi ve tıklayın Create Virtual Directory
. Visual Studio Yönetici olarak çalıştırılmazsa, büyük olasılıkla başarısız olur. Şimdi her şey çalışmalı.
Bu sorunun kabul edilen yanıtı, IIS Express'in webmatrix ile çalışmasını sağlamak için bir kılavuzdur. VS 2010 ile çalışmaya çalışırken bu kılavuzu daha kullanışlı buldum .
Az önce 3. ve 4. adımları izledim (IIS Express'i yönetici olarak çalıştırıyorum) ve güvenlik duvarımı geçici olarak devre dışı bırakmak zorunda kaldım.
IIS Express yapılandırmanızı değiştirmeye çalışmak, yeni HTTP.sys kuralları eklemek veya Visual Studio'yu Yönetici olarak çalıştırmak yerine bağlantı noktası iletmeyi ayarlamayı deneyebilirsiniz.
Temel olarak IP:PORT
, web sitenizin çalıştığı makinenizdeki başka bir boş bağlantı noktasına iletmeniz gerekir , ancak yerel ana bilgisayara değil, harici ağ adaptörüne.
Mesele şu ki, IIS Express (en azından Windows 10'da) [::1]:port
IPv6 bağlantı noktasında dinlediği anlamına gelir. Bunu dikkate almanız gerekir.
Bu işi şu şekilde yaptım - http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html
Umarım yardımcı olur.
Bulduğum en basit ve en havalı yol kullanmaktı (kurulum 2 dakika sürüyor):
Localhost üzerinde çalışan herhangi bir şeyle çalışacaktır. Sadece kayıt olun, biraz yorucu çalışın ve localhost'ta ne çalıştırırsanız çalışın, her yerden erişebileceğiniz genel URL alır.
Bu, uzak ekip arkadaşlarınıza bir şeyler göstermek için iyidir, IIS kurulumu veya güvenlik duvarları ile uğraşmak gerekmez. Erişimi durdurmak istiyorum sadece yürütülebilir sonlandırmak.
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -host-header=localhost 89230
89230'un IIS Express bağlantı noktanız olduğunu varsayarsak
Ücretsiz planda bile birden fazla bağlantı noktası çalıştırabilirsiniz
Win 8.1 ve dış istek IIS Express kullanarak bazı sorunlar var.
Dış istekte hata ayıklamak için şu adımları izleyin:
İşe yarıyor!
Visual Studio'yu Yönetici'den çalıştırırsanız,
<binding protocol="http" bindingInformation="*:8080:*" />
veya
<binding protocol="https" bindingInformation="*:8443:*" />
içine
%userprofile%\My Documents\IISExpress\config\applicationhost.config
$(SolutionDir).vs\config\applicationHost.config
ve uygulamanın güvenlik bağlantı noktasını (8443) Windows güvenlik duvarında açmak zorunda kaldım.
Ben sadece hata ayıklama bağlantı noktasına bir yeniden yazma kuralı oluşturulmuş bir yerel IIS etkin vardı ... Ben bu geliştirmenin bir kez kaldırılması daha kolay çünkü diğer yöntemden daha iyi ve daha serin olduğunu düşünüyorum ... Yeniden yazma nasıl görünüyor. .
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="^dev/(.*)" />
<action type="Rewrite" url="http://localhost:47039/{R:1}" />
</rule>
</rules>
</rewrite>
VS ayrıca yerel IIS kullanarak doğrudan geliştirmenize izin verir (daha sonra uzak bağlantılara izin verir), ancak sırayla her zaman bir yönetici olarak çalıştırmanız gerekir ... Bunu sevmiyorum.
Bu sorunu ters proxy yaklaşımı kullanarak çözdüm.
Wamp sunucusunu kurdum ve apache web sunucusunun basit ters proxy özelliğini kullandım.
Apache web sunucusunu (8081) dinlemek için yeni bir port ekledim. Sonra o bağlantı noktası için sanal ana makine olarak proxy yapılandırması ekledim.
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
Tüm bu adımları attım ve hiçbir şey bana yardımcı olmadı. Ve ihtiyacım olan şey, sadece uygulamamı IIS Express ile çalıştırmak ...
Umarım yardımcı olur.
Yerel ağımdaki diğer kullanıcılara iis isteklerini sunamadım, tek yapmam gereken (yukarıdakilere ek olarak) BT Hub yönlendiricimi yeniden başlatmaktı.
Bu delicesine harika ve hatta güzel alan adları ile HTTPS'yi kapsar:
http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
Yukarıdaki bağlantı hiç kaybolması durumunda SO üzerinde başka bir yerde bulamadığım gerçekten harika parçalar:
> C:\Program Files (x86)\IIS Express>IisExpressAdminCmd.exe Usage:
> iisexpressadmincmd.exe <command> <parameters> Supported commands:
> setupFriendlyHostnameUrl -url:<url>
> deleteFriendlyHostnameUrl -url:<url>
> setupUrl -url:<url>
> deleteUrl -url:<url>
> setupSslUrl -url:<url> -CertHash:<value>
> setupSslUrl -url:<url> -UseSelfSigned
> deleteSslUrl -url:<url>
>
> Examples: 1) Configure "http.sys" and "hosts" file for friendly
> hostname "contoso": iisexpressadmincmd setupFriendlyHostnameUrl
> -url:http://contoso:80/ 2) Remove "http.sys" configuration and "hosts" file entry for the friendly hostname "contoso": iisexpressadmincmd
> deleteFriendlyHostnameUrl -url:http://contoso:80/
Yukarıdaki yardımcı program sizin için SSL sertifikasını kaydedecektir! -UseSelfSigned seçeneğini kullanırsanız, bu çok kolaydır.
İşleri zor bir şekilde yapmak istiyorsanız, belli olmayan kısım HTTP.SYS'ye hangi sertifikanın kullanılacağını söylemeniz gerekir:
netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE
Certhash, MMC'deki sertifika özelliklerinden alabileceğiniz "Parmak İzi" dir.
Aşağıdakileri yaptım ve bağlanabildim:
1) IIS Express Config Bağlamasını Yerel Ana Bilgisayardan '*' Olarak Değiştirdi
bağlama protokolü = "http" bağlamaInformation = "*: 8888: *"
2) Protokol türü için belirli bir bağlantı noktasına izin vermek üzere güvenlik duvarında gelen gelen kuralı: tcp
3) Bağlantı noktanıza ağ yapılandırması eklemek için aşağıdaki komutu ekleyin: netsh http add urlacl url = http: // *: 8888 / kullanıcı = herkes
[proje özellikleri iletişim kutusu]
VisualStudio 2017 ve NetCore API projesini kullanarak geliştirme için:
1) Cmd-Box: IP adresini belirlemek için ipconfig / all
2a) Alınan IP adresini Proje özelliklerine girin-> Hata Ayıklama Sekmesi
2b) Bir Bağlantı Noktası seçin ve bunu adım 2a'dan IP adresine ekleyin.
3) Seçili Bağlantı Noktasında gelen TCP trafiğine izin vermek için güvenlik duvarına bir izin kuralı ekleyin (güvenlik duvarım bir iletişim kutusuyla tetiklendi: "Güvenlik duvarına kural ekle veya engelle"). Bu durumda irade ekleyin hile yapmak.
Yukarıdaki çözümün dezavantajı:
1) Dinamik bir IP adresi kullanıyorsanız, başka bir IP adresi atanmış olması durumunda yukarıdaki adımları tekrarlamanız gerekir.
2) Sunucunuzda unutabileceğiniz açık bir Bağlantı Noktası var, ancak bu açık bağlantı noktası istenmeyen konuklar için bir davet olmaya devam ediyor.