Konfigurasi IIS Express untuk akses eksternal ke proyek VS2010

103

Saya sedang mengembangkan proyek di VS2010 dan dapat melihat situs saya secara lokal melalui IIS Express. Saya ingin mengaktifkan akses eksternal melalui jaringan.

Semua penelitian saya telah mengirim saya ke entri blog ini: http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx , yang berguna tetapi tidak tampaknya tidak menunjukkan cara mengkonfigurasi binding untuk proyek yang dimulai di studio visual (saya tidak dapat menemukan layar di screenshot, dan saya telah mengedit info binding di applicationhost.config, tetapi sepertinya tidak tercermin saat saya menjalankan situs dari Studio visual).

sombong
sumber
10
silahkan baca posting blog Scott Hanselman hanselman.com/blog/…
balexandre
kemungkinan duplikat IIS Express mengaktifkan permintaan eksternal
abatishchev

Jawaban:

136

1 Setelah mengedit file applicationhost.config (terletak di folder IISExpress di dokumen Anda), pengikatan situs Anda akan terlihat seperti di bawah ini:

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

Binding terdiri dari tiga bagian. Pertama alamat atau daftar IP, atau seperti dalam kasus ini, karakter pengganti. Kedua nomor port, dan ketiga nama host, atau daftar, atau karakter pengganti (untuk memfilter menurut Hostheader). Untuk tujuan pengembangan, wildcard paling cocok di sini karena Anda kemungkinan besar akan menggunakan port unik.

2 Karena Anda menggunakan pengikatan non-localhost, diperlukan izin tambahan. Anda dapat menjalankan VS sebagai administrator, atau sebaiknya Anda menambahkan ACL URL untuk memberikan izin yang diperlukan. Pada contoh di bawah, izin diberikan kepada semua orang, tetapi Anda dapat menggunakan nama pengguna Anda sendiri.

Catatan: The urlaclkeharusan persis dengan mengikat. Jadi urlaclfor http://*:8080akan memungkinkan pengikatan *:8080:*, tetapi bukan pengikatan *:8080:localhostmeskipun yang terakhir adalah bagian dari yang sebelumnya. ini berarti jika, alih-alih menggunakan karakter pengganti, Anda mencantumkan header host applicationhost.config, Anda harus menambahkan yang cocok urlacluntuk masing-masing.

Langkah-langkah untuk mengonfigurasi HTTP.sys untuk lalu lintas eksternal mirip dengan menyiapkan situs untuk menggunakan port yang dicadangkan. Di Windows 7 atau Windows Vista, dari prompt perintah yang ditinggikan, jalankan perintah berikut:

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

Di Windows XP, jalankan perintah berikut dari prompt perintah yang ditampilkan:

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

Catatan 2 Jika menjalankan VS sebagai administrator atau menambahkan entri ACL tidak menyelesaikan masalah Anda, jalankan IIS Express dari baris perintah dan periksa apakah ada pesan kegagalan pendaftaran yang mengikat. Untuk memulai dari baris perintah, berikan perintah ini:

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

3 Terakhir, Anda memerlukan entri firewall yang sesuai. Untuk ini, paling mudah menggunakan konsol "Windows Firewall dengan Keamanan Lanjutan".

Di bawah "Inbound Rules", pilih "New Rule ...".

  • Jenis Aturan adalah "Kustom".
  • Program adalah Layanan-> Sesuaikan ...-> Terapkan ke layanan saja. (Meskipun IIS Express bukan layanan, multiplekser HTTP yang digunakannya adalah).
  • Protokol adalah TCP
  • Port Khusus: Cantumkan semua port untuk semua binding IIS Express Anda. Anda dapat kembali ke aturan ini dan menambahkan port kapan saja. (Jika ini menjadi melelahkan, Anda mungkin menambahkan rentang seperti 40000-65534yang mencakup seluruh rentang yang digunakan oleh Visual Studio, tetapi perlu diketahui ini kurang aman).
  • Tindakannya adalah "Izinkan koneksi"
  • Profil akan menjadi salah satu dari berikut ini. Jika ragu, pilih "Domain + pribadi".
    • "Domain", Jika milik Anda adalah desktop perusahaan dan hanya akan berjalan di domain lokal
    • "Domain + Pribadi" Jika milik Anda adalah mesin pengembangan pribadi di lingkungan non-korporat, atau laptop perusahaan yang juga perlu berfungsi saat bekerja dari rumah.
    • "Domain, Private dan Public", jika Anda perlu melakukan demonstrasi di jaringan non-privat.
  • Nama harus seperti "IIS Express Dev Server"
vikomall
sumber
12
@ user578913 Jadi saya akhirnya menemukan file applicationhost.config yang benar dengan membuka taskbar IIS Express yang sedang berjalan dan mengkliknya kemudian pada link ke file config. Saya mengatur port ke 1063 pada baris kedua, karena itulah baris pertama yang telah diatur. Jalankan baris perintah Anda, dan semuanya tampak baik-baik saja. Ketika saya membuka nama - mesin atau nama - mesin: 1063 dari mesin lain di jaringan, saya masih tidak mendapatkan apa-apa.
sombong
15
ok, karena Visual Studio menetapkan port (selain 8080), Windows Firewall telah memblokirnya. Setelah mematikan Windows Firewall (saya bisa dibilang hanya membuka port, tetapi saya berada di jaringan yang aman) dan menggunakan IP mesin saya daripada nama mesin, itu berhasil. Terima kasih. Saya akan memilih, tetapi belum memiliki perwakilan = (
sombong
3
Ya, jika Windows Firewall harus aktif maka Anda secara eksplisit menambahkan port TCP 8080 (atau yang Anda gunakan). Di Windows 7, awalnya saya mencoba menetapkan port ke "IIS Express Worker Process". Tapi itu tidak berhasil. Saya harus menggunakan opsi "Aturan Baru" dan mengizinkan port 8080. Memilih profil (Domain, Pribadi, Publik) juga penting.
Gautam Jain
2
Catatan Untuk Diri Sendiri: Jika Anda mendapatkan Akses Ditolak, Jalankan Visual Studio sebagai Admin .
nVentimiglia
3
Pada VS2015, lokasi file adalah C:\<Path\To\Solution>\.vs\config\applicationhost.config. (Terima kasih, @Talon)
sombong
29

Saya menghabiskan waktu berjam-jam untuk masalah ini juga, mencoba menelusuri dari Android Xoom saya ke mesin win7 dev saya, sehingga saya dapat menguji aplikasi web asp.net baru yang saya buat. Yang saya lakukan hanyalah mengubah applicationhost.config IISExpress dari menggunakan PC HostName ke alamat IP PC saat ini, untuk situs baru saya.

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

untuk

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

Setelah saya melakukan ini & memulai kembali IISExpress ... Saya dapat menjelajahi mesin dev-Lee saya & melihat aplikasi saya dari Xoom saya!

leester39
sumber
10
Semua yang saya dapatkan dengan semua solusi ini adalah kesalahan 400 - Permintaan Buruk. Ada saran?
Krumelur
2
@Krumelur, pastikan Anda mengedit file applicationost.config yang benar. yang ada di folder Dokumen Saya.
Codler
14

Kita dapat menambahkan beberapa alamat pengikatan dengan mengedit applicationhost.config dari IIS Express

<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>

Sekarang kita bisa mengakses situs web dari LAN menggunakan alamat IP.

Mengakses situs lokal dari Lan menggunakan IIS Express

Nasir Mahmood
sumber
6

Visual Studio 2013 SP1 dan yang lebih baru (2015) menyertakan pengaturan "Terapkan pengaturan server untuk semua pengguna (simpan dalam file proyek)". Ini diaktifkan secara default. Saat diaktifkan Visual Studio meluncurkan IIS Express dengan argumen baris perintah yang membuatnya menggunakan file konfigurasi yang berbeda. Lokasi file 'applicationhost.config' berada di bawah direktori proyek di '.vs \ config'.

Jon Eldridge
sumber
1
Ya, itulah masalah dalam kasus saya - Saya mencoba mengedit file yang salah. Saat ini terjadi, Anda dapat melihat di mana konfigurasi untuk aplikasi IIS Express Anda dengan mengklik ikon baki, mencantumkan semua aplikasi dan memilih. Path ke file konfigurasi akan ditulis di bawah ini. Saya berada di .vs \ config
evilkos
1
Ya, saya juga sama. Terima kasih banyak.
Vas
1

Jika Anda bekerja dengan Visual Studio, ikuti langkah-langkah berikut untuk mengakses IIS-Express melalui IP-Adress:

  1. Dapatkan alamat IP host Anda: ipconfigdi Command Line Windows
  2. GoTo $ (SolutionDir) .vs \ config \ applicationHost.config
  3. 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>
  4. Tambahkan: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    dengan Alamat IP Anda
  5. Jalankan Visual Studio Anda dengan hak Administrator dan semuanya harus berfungsi
  6. Mungkin mencari beberapa masalah firewall jika Anda mencoba menyambung dari jarak jauh

Petunjuknya adalah, Visual Studio memiliki file applicationHost.confignya sendiri!

Daniel Eisenreich
sumber
0

Saya mengalami banyak masalah membuat ini berfungsi dari visual studio 2012, saya beralih dari kesalahan 404 menjadi kesalahan 503. Akhirnya apa yang berhasil bagi saya, adalah menghapus semua konfigurasi terkait di konfigurasi IIS Express ...

"\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

Kemudian saya membuat direktori virtual baru dari halaman properti di proyek web saya di VS tetapi sebelum saya membuat direktori virtual saya mengubah nama host menjadi http: // myhost: 80 / lalu tekan tombol buat direktori virtual. Sebelumnya saya mendapatkan kesalahan yang mengatakan nama host harus 'localhost' tetapi kali ini tidak. Dan setelah itu, itu berhasil.

Singkatnya, kosongkan konfigurasi yang ada terlebih dahulu dan mulai lagi.

stu
sumber
-2

Jika domain eksternal Anda adalah "name.mydyndns.com", maka Anda perlu menulis:

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

Ini bekerja pada Windows 2003 Server dan IIS 7.5 Express.

Juan
sumber
-3

Screenshot

di pool aplikasi di IIS, setel "Enable 32-Bit Applications" menjadi "true".

Mürsel Yıldırım
sumber
Tidak yakin ini benar-benar menjawab pertanyaan. Apakah Anda bermaksud memposting ini pada pertanyaan lain?
ckittel