Bagaimana saya bisa mengaktifkan permintaan jarak jauh di IIS Express? Scott Guthrie menulis itu mungkin tetapi dia tidak mengatakan bagaimana.
Bagaimana saya bisa mengaktifkan permintaan jarak jauh di IIS Express? Scott Guthrie menulis itu mungkin tetapi dia tidak mengatakan bagaimana.
Jawaban:
Ada posting blog di situs tim IIS yang sekarang menjelaskan cara mengaktifkan koneksi jarak jauh di IIS Express . Berikut adalah bagian terkait dari pos yang dirangkum:
Pada Vista dan Win7, jalankan perintah berikut dari prompt administratif:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Untuk XP, instal terlebih dahulu Alat Dukungan Windows XP Paket Layanan 2. Kemudian jalankan perintah berikut dari prompt administratif:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
netsh
perintah untuk mengizinkan koneksi pada nama host apa saja ?
user={PARAM_USER}
akan berada dalam bahasa Anda sendiri.
user=todos
saja user=everyone
.
Ada tiga perubahan yang perlu Anda lakukan.
.config
file Anda . Khas:
$(solutionDir)\.vs\config\applicationhost.config
%userprofile%\My Documents\IISExpress\config\applicationhost.config
Temukan elemen pengikat situs Anda, dan tambahkan
<binding protocol="http" bindingInformation="*:8080:*" />
netsh http add urlacl url=http://*:8080/ user=everyone
Di mana everyone
grup windows. Gunakan tanda kutip ganda untuk grup dengan spasi seperti "Tout le monde".
Izinkan IIS Express melalui Windows firewall.
Mulai / Windows Firewall dengan Keamanan Tingkat Lanjut / Aturan Masuk / Aturan Baru ...
Program
%ProgramFiles%\IIS Express\iisexpress.exe
ATAU Port 8080 TCP
Sekarang ketika Anda mulai, iisexpress.exe
Anda akan melihat pesan seperti
URL yang berhasil terdaftar "http: // *: 8080 /" untuk situs "hello world" application "/"
users=everyone
untuk netsh
(langkah kedua) dapat menyebabkan kesalahan 1789. Solusi adalah menerjemahkan everyone
ke nama grup yang sesuai dalam bahasa Anda.
Project Url
, jika saya memasukkan tanda bintang untuk nama host itu memberikan kesalahan. Jika saya memasukkan yang lain, ia mencoba membuat direktori virtual baru. Itu tidak menautkan ke entri di application.config.
bindingInformation="*:8080:hostname"
dan di langkah 2 url=http://hostname:8080/
, dan di properti proyek web Visual Studio di tab Web atur Url Proyek ke http://hostname:8080/
. Hapus *
urlacl jika Anda sudah membuatnya; itu tidak akan berfungsi jika Anda memiliki keduanya. Akhirnya, URL yang Anda buka di browser web Anda harus merujuk nama host, bukan localhost.
<binding protocol="http" bindingInformation="*:8080:localhost" />
Saya ingat mengalami masalah yang sama saat mencoba alur kerja ini beberapa bulan yang lalu.
Itulah sebabnya saya menulis utilitas proxy sederhana khusus untuk skenario semacam ini: https://github.com/icflorescu/iisexpress-proxy .
Menggunakan IIS Express Proxy , semuanya menjadi sangat sederhana - tidak perlu “netsh http tambahkan urlacl url = vaidesg: 8080 / user = everyone” atau untuk mengacaukan “applicationhost.config” Anda.
Hanya mengeluarkan ini di command prompt:
iisexpress-proxy 8080 to 3000
... dan kemudian Anda dapat mengarahkan perangkat jarak jauh ke http: // vaidesg: 3000 .
Sebagian besar waktu sederhana lebih baik.
Tidak ada yang berhasil untuk saya sampai saya menemukan iisexpress-proxy .
Buka command prompt sebagai administrator, lalu jalankan
npm install -g iisexpress-proxy
kemudian
iisexpress-proxy 51123 to 81
dengan asumsi proyek Visual Studio Anda terbuka di localhost: 51123 dan Anda ingin mengakses alamat IP eksternal xxxx: 81
Sunting: Saya sedang menggunakan ngrok
Sebagai catatan untuk ini:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Ini hanya akan berfungsi pada Windows versi bahasa Inggris. Jika Anda menggunakan versi lokal Anda harus mengganti "semua orang" dengan sesuatu yang lain, misalnya:
Kalau tidak, Anda akan mendapatkan kesalahan (Buat SDDL gagal, Kesalahan: 1332)
Sumber yang bagus adalah Bekerja dengan SSL saat Pengembangan lebih mudah dengan IISExpress oleh Scott Hanselman.
Apa yang Anda kejar adalah bagian Memperoleh IIS Express untuk dilayani secara eksternal di atas Port 80
Jika Anda bekerja dengan Visual Studio, ikuti langkah-langkah ini untuk mengakses IIS-Express melalui IP-Adress:
ipconfig
di Windows Command LinePergi ke
$(SolutionDir)\.vs\config\applicationHost.config
Temukan
<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>
Tambahkan:
<binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
dengan Alamat-IP Anda
Saya menyelesaikannya dengan pemasangan "Conveyor by Keyoti" di Visual Studio Professional 2015. Conveyor menghasilkan alamat REMOTE (IP Anda) dengan port (45455) yang memungkinkan permintaan eksternal. Contoh:
Conveyor memungkinkan Anda menguji aplikasi web dari tablet eksternal dan ponsel di jaringan Anda atau dari emulator Android (tanpa http://10.0.2.2:<hostport>
)
Langkah-langkahnya ada di tautan berikut:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
Jika Anda telah mencoba jawaban Kolonel Panic tetapi tidak berhasil di Visual Studio, coba ini:
Tambahkan yang lain <binding />
di konfigurasi IIS Express Anda
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
Akhirnya, Anda harus menjalankan Visual Studio sebagai Admin
Apa yang membantu saya, adalah mengklik kanan ikon 'IISExpress', 'Tampilkan Semua aplikasi'. Kemudian memilih situs web dan saya melihat aplicationhost.config yang digunakannya, dan koreksi berjalan dengan sempurna.
Inilah yang saya lakukan untuk Windows 10 dengan Visual Studio 2015 untuk mengaktifkan akses jarak jauh, baik dengan http dan https:
Langkah pertama adalah mengikat aplikasi Anda ke alamat IP internal Anda. Jalankan cmd
-> ipconfig
untuk mendapatkan alamat. Buka file /{project folder}/.vs/config/applicationhost.config
dan gulir ke bawah sampai Anda menemukan sesuatu seperti ini:
<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>
Tambahkan dua binding baru di bawah bindings
. Anda dapat menggunakan HTTPS juga jika Anda suka:
<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />
Tambahkan aturan berikut ke firewall Anda, buka cmd
prompt baru sebagai admin dan jalankan perintah berikut:
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
Sekarang jalankan Visual Studio sebagai Administrator
. Klik kanan file proyek proyek web dan pilih Properties
. Buka Web
tab, dan klik Create Virtual Directory
. Jika Visual Studio tidak dijalankan sebagai Administrator, ini mungkin akan gagal. Sekarang semuanya harus bekerja.
Jawaban yang diterima untuk pertanyaan ini adalah panduan untuk membuat IIS Express bekerja dengan webmatrix. Saya menemukan panduan ini lebih berguna ketika mencoba membuatnya berfungsi dengan VS 2010.
Saya baru saja mengikuti langkah 3 & 4 (menjalankan IIS Express sebagai administrator) dan harus menonaktifkan sementara firewall saya agar bisa berfungsi.
Anda dapat mencoba mengatur penerusan port alih-alih mencoba mengubah konfigurasi IIS Express Anda, menambahkan aturan HTTP.sys baru atau menjalankan Visual Studio sebagai Admin.
Pada dasarnya Anda perlu meneruskan IP:PORT
situs web Anda berjalan ke beberapa port gratis lain di komputer Anda tetapi pada adaptor jaringan eksternal, bukan localhost.
Masalahnya adalah bahwa IIS Express (setidaknya pada Windows 10) mengikat [::1]:port
artinya mendengarkan pada port IPv6. Anda perlu mempertimbangkan ini.
Inilah cara saya membuat karya ini - http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html
Semoga ini bisa membantu.
Cara paling sederhana dan paling keren yang saya temukan adalah menggunakan (butuh 2 menit untuk pengaturan):
Ini akan bekerja dengan apa pun yang berjalan di localhost. Cukup daftar, jalankan sedikit excutable dan apa pun yang Anda jalankan di localhost mendapatkan URL publik yang dapat Anda akses dari mana saja.
Ini bagus untuk menunjukkan hal-hal kepada rekan tim jarak jauh Anda, jangan mengotak-atik pengaturan IIS atau firewall. Ingin menghentikan akses, cukup putuskan eksekusi.
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -host-header=localhost 89230
dengan asumsi bahwa 89230 adalah port IIS Express Anda
Anda juga dapat menjalankan banyak port bahkan secara gratis
Saya memiliki beberapa masalah menggunakan IIS Express di Win 8.1 dan permintaan eksternal.
Saya mengikuti langkah-langkah ini untuk men-debug permintaan eksternal:
Bekerja!
Jika Anda menjalankan Visual Studio dari Admin, Anda dapat menambahkan saja
<binding protocol="http" bindingInformation="*:8080:*" />
atau
<binding protocol="https" bindingInformation="*:8443:*" />
ke
%userprofile%\My Documents\IISExpress\config\applicationhost.config
$(SolutionDir).vs\config\applicationHost.config
dan juga, saya harus membuka port (8443) aplikasi di Windows firewall.
Saya telah mengaktifkan IIS lokal jadi saya baru saja membuat aturan penulisan ulang untuk port debugging saya ... Saya pikir ini lebih baik dan lebih dingin daripada metode lain karena lebih mudah untuk menghapus begitu saya selesai mengembangkan ... Berikut adalah bagaimana tampilan penulisan ulang. .
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="^dev/(.*)" />
<action type="Rewrite" url="http://localhost:47039/{R:1}" />
</rule>
</rules>
</rewrite>
VS juga memungkinkan Anda untuk mengembangkan menggunakan IIS lokal Anda secara langsung (yang kemudian memungkinkan koneksi jarak jauh) tetapi pada gilirannya Anda harus selalu menjalankannya sebagai administrator ... Saya tidak suka itu.
Saya memecahkan masalah ini dengan menggunakan pendekatan proxy terbalik.
Saya menginstal wamp server dan menggunakan fitur proxy terbalik sederhana dari server web apache.
Saya menambahkan port baru untuk mendengarkan server web Apache (8081). Kemudian saya menambahkan konfigurasi proxy sebagai virtualhost untuk port itu.
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
Saya melakukan semua langkah ini dan tidak ada yang membantu saya. Dan apa yang saya butuhkan, itu hanya untuk menjalankan aplikasi saya melalui IIS Express ...
Semoga ini bisa membantu.
Saya tidak dapat melayani permintaan iis kepada pengguna lain di jaringan lokal saya, yang harus saya lakukan (selain yang di atas) adalah me-restart router BT Hub saya.
Ini luar biasa mengagumkan dan bahkan mencakup HTTPS dengan nama domain cantik:
http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
Bagian yang benar-benar luar biasa yang tidak dapat saya temukan di tempat lain di SO kalau-kalau tautan di atas hilang:
> 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/
Utilitas di atas akan mendaftarkan sertifikat SSL untuk Anda! Jika Anda menggunakan opsi -UseSelfSigned, itu sangat mudah.
Jika Anda ingin melakukan hal-hal dengan cara yang sulit, bagian yang tidak jelas adalah Anda perlu memberi tahu HTTP.SYS sertifikat apa yang digunakan, seperti ini:
netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE
Certhash adalah "Thumbprint" yang bisa Anda dapatkan dari properti sertifikat di MMC.
Saya melakukan yang berikut dan dapat terhubung:
1) mengubah IIS express config binding dari host lokal ke '*'
binding protocol = "http" bindingInformation = "*: 8888: *"
2) Aturan inbound yang ditentukan pada firewall untuk memungkinkan port tertentu untuk jenis protokol: tcp
3) Tambahkan perintah berikut untuk menambahkan konfigurasi jaringan untuk port Anda: http netsh tambahkan urlacl url = http: // *: 8888 / pengguna = semua orang
[dialog properti proyek]
Untuk pengembangan menggunakan VisualStudio 2017 dan proyek-API NetCore:
1) Dalam Cmd-Box: ipconfig / all untuk menentukan alamat IP
2a) Masukkan alamat IP yang diambil di Properti proyek-> Tab Debug
2b) Pilih Port dan lampirkan itu ke alamat IP dari langkah 2a.
3) Tambahkan aturan perbolehkan di firewall untuk mengizinkan trafik TCP yang masuk pada Port yang dipilih (firewall saya dipicu dengan dialog: "Blokir atau tambahkan aturan ke firewall"). Tambah akan dalam hal melakukan trik.
Kerugian dari solusi di atas:
1) Jika Anda menggunakan alamat IP dinamis, Anda harus mengulangi langkah-langkah di atas jika IP-address lain telah ditetapkan.
2) Server Anda sekarang memiliki Port terbuka yang mungkin Anda lupakan, tetapi port terbuka ini tetap menjadi undangan untuk tamu yang tidak diinginkan.