Menggunakan Domain Kustom Dengan IIS Express

304

Secara tradisional saya menggunakan domain khusus dengan server pengembangan localhost saya. Sesuatu di sepanjang garis:

dev.example.com
dev.api.example.com

Ini telah memberi saya banyak fleksibilitas ketika bekerja dengan API eksternal seperti Facebook. Ini telah bekerja dengan baik di masa lalu dengan yang dibangun di Visual Studio Development Server, karena semua yang perlu saya lakukan adalah menambahkan CNAME ke catatan DNS yang menunjuk 127.0.0.1.

Namun saya belum bisa menjalankannya dengan IIS Express. Semua yang saya coba tampaknya gagal. Saya bahkan telah menambahkan konfigurasi XML yang benar ke applicationHost.configfile untuk IIS Express, tetapi tampaknya tidak mengenali entri yang valid seperti instalasi IIS yang sebenarnya.

<binding protocol="http" bindingInformation="*:1288:dev.example.com" />

Setiap kali saya memasuki baris ini dan mencoba meminta http://dev.example.com:1288saya mendapatkan pesan berikut:

Permintaan Buruk - Nama Host Tidak Valid

Adakah yang tahu kalau saya melewatkan sesuatu yang jelas? Atau apakah tim IIS Express benar-benar tidak memiliki pandangan ke depan untuk melihat jenis penggunaan ini?

Nick Berardi
sumber
Pastikan Anda memiliki atribut applicationPool dari node aplikasi yang disetel ke "Clr2IntegratedAppPool" atau "Clr4IntegratedAppPool". Saya mendapat kesalahan Nama Host Buruk yang Anda lihat saat menggunakan "Clr2ClassicAppPool" atau "Clr4ClassicAppPool".
Neil Monroe
bingung - Catatan CNAME tidak menerima alamat ip tetapi nama host lain sebagai gantinya. Apakah maksud Anda catatan?
Scott Coates
1
Saya punya banyak masalah dengan ini dan merasa jauh lebih mudah untuk hanya menggunakan IIS daripada IIS Express
user0b101010
Saya juga mengalami hal ini. Saya berharap itu hanya akan melihat nomor port dan mengabaikan domain. Tidak beruntung. Seandainya saya bisa mengaktifkan "terima semua" di port ....
Brady Moritz
Pilih sekarang! Saya telah menambahkan saran
UserVoice

Jawaban:

367

Inilah yang berhasil bagi saya (Diperbarui untuk VS 2013, lihat riwayat revisi untuk 2010, untuk VS 2015 lihat ini: https://stackoverflow.com/a/32744234/218971 ):

  1. Klik kanan Proyek Aplikasi Web Anda ▶ PropertiesWeb, lalu konfigurasikanServers bagian sebagai berikut:
    • Pilih IIS Express ▼ dari drop down
    • Url Proyek: http://localhost
    • Timpa URL akar aplikasi: http://dev.example.com
    • Klik Create Virtual Directory(jika Anda mendapatkan kesalahan di sini, Anda mungkin perlu menonaktifkan IIS 5/6/7/8, mengubah IIS Default Sitemenjadi apa pun selain port :80, pastikan Skype tidak menggunakan port 80 , dll.)
  2. Opsional: Setel Start URLkehttp://dev.example.com
  3. Buka %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config(Windows XP, Vista, dan 7) dan edit definisi situs di <sites>blok konfigurasi agar sesuai dengan yang berikut:

    <site name="DevExample" id="997005936">
        <application path="/" applicationPool="Clr2IntegratedAppPool">
            <virtualDirectory
                path="/"
                physicalPath="C:\path\to\application\root" />
        </application>
        <bindings>
            <binding
                protocol="http"
                bindingInformation=":80:dev.example.com" />
        </bindings>
        <applicationDefaults applicationPool="Clr2IntegratedAppPool" />
    </site>
    
  4. Jika menjalankan MVC: pastikan applicationPooldiatur ke salah satu opsi "Terintegrasi" (seperti "Clr2IntegratedAppPool").

  5. Buka hostsfile Anda dan tambahkan baris 127.0.0.1 dev.example.com.
  6. ► Start aplikasi Anda!

Beberapa saran bagus dari komentar:

  • Anda mungkin perlu menjalankan Visual Studio sebagai Administrator.
  • Jika Anda ingin membuat pengembang lain melihat IIS Anda berjalan netsh http add urlacl url=http://dev.example.com:80/ user=everyone
  • Jika Anda ingin situs diselesaikan untuk semua host yang ditetapkan bindingInformation="*:80:". Gunakan port apa pun yang Anda inginkan, 80 hanya nyaman.
David Murdoch
sumber
12
Ini persis apa yang saya lakukan, akan menulis ini, tetapi Anda memukul saya ke pukulan :-) Sebagai catatan, jika Anda ingin membiarkan dev lain melihat IIS Anda, Anda mungkin ingin melakukan sesuatu seperti "netsh http add urlacl url = dev.example.com:80 user = everyone "
EBarr
6
Juga, jika Anda ingin situs untuk menyelesaikan semua host, Anda dapat menggunakan: bindingInformation = "*: 80:" Saya menggunakan ini sehingga localtunnel.com berfungsi.
Lance Fisher
17
Saya mendapatkan kesalahan akses ditolak. Menjalankan VS 2012 saat admin memperbaikinya.
xanadont
3
IIS Express versi apa ini? Saya menjalankan VS2012 (yang saya percaya adalah IIS Express 8.0), dan ketika saya mengklik radiobutton "Gunakan Server IIS Lokal" di bawah area "Server" pada halaman properti Web, klik kotak centang Gunakan IIS Express, dan kemudian coba untuk memasukkan " mydev.example.com ", lalu tekan tombol "Buat Direktori Virtual", saya mendapatkan kesalahan ini "Tidak dapat membuat direktori virtual. Tidak dapat membuat situs Web mydev.example.com". Anda harus menentukan "localhost" untuk nama server.
Michael McCarthy
12
Ini rumit. Seseorang harus mengubah pelapisan pada beberapa tempat yang berbeda. Sangat mudah untuk membuat kekacauan yang nyata. Apakah benar-benar tidak ada cara yang lebih sederhana?
Anderson
151

Untuk Visual Studio 2015 langkah-langkah dalam jawaban di atas berlaku tetapi applicationhost.configfile berada di lokasi baru. Di folder "solusi" Anda ikuti jalan, ini membingungkan jika Anda memutakhirkan dan akan memiliki DUA versi applicationhost.configdi mesin Anda.

\.vs\config

Di dalam folder itu Anda akan melihat file applicationhost.config Anda

Atau Anda bisa mencari folder solusi Anda untuk file .config dan menemukannya dengan cara itu.

Saya pribadi menggunakan konfigurasi berikut:

masukkan deskripsi gambar di sini

Dengan yang berikut ini di file host saya:

127.0.0.1       jam.net
127.0.0.1       www.jam.net

Dan berikut ini di file applicationhost.config saya:

<site name="JBN.Site" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Dev\Jam\shoppingcart\src\Web\JBN.Site" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:49707:" />
            <binding protocol="http" bindingInformation="*:49707:localhost" /> 
    </bindings>
</site>

Ingatlah untuk menjalankan instance studio visual 2015 Anda sebagai administrator! Jika Anda tidak ingin melakukan ini setiap kali saya merekomendasikan ini:

Cara Menjalankan Visual Studio sebagai Administrator secara default

Saya harap ini membantu seseorang, saya mempunyai masalah ketika mencoba meningkatkan ke visual studio 2015 dan menyadari bahwa tidak ada konfigurasi saya yang dibawa.

njfife
sumber
9
Bagian penting adalah menambahkan*:49707: ikatan kedua alih-alih mengganti default *:49707:localhostseperti yang disarankan dalam banyak jawaban lainnya. Dan Anda harus menjalankan VS sebagai administrator, memang (sic!). Terima kasih.
fracz
3
Anda juga dapat menggunakan URL seperti http://jam.127.0.0.1.xip.io/jika Anda tidak ingin memodifikasi file host Anda. Plus, kolaborator mana pun tidak perlu memodifikasi milik mereka. Lihat xip.io .
Zack Martin
1
Saya pikir patut untuk dicatat bahwa folder ".vs" disembunyikan dan harus dibuat terlihat pada awalnya
Disappointed
3
Saya telah mengkonfirmasi bahwa ini berfungsi di Visual Studio 2017 juga. Menariknya, saya tidak membutuhkan kedua elemen <binding> (hanya yang pertama tanpa "localhost"). Visual Studio, bagaimanapun, tentu perlu dijalankan sebagai Administrator, yang agak menjengkelkan
Loren Paulsen
1
Saya hanya berharap ada cara bagi kita yang tidak diizinkan menjalankan apa pun secara administratif untuk melakukan ini. Pengusaha / klien yang selimut melarang hak istimewa admin tanpa memikirkan bagaimana mereka dapat dengan aman mengaktifkan ini adalah pandangan yang sangat pendek.
Steve Pettifer
44

Saat menggunakan Visual Studio 2012 dengan IIS Express, mengubah ikatan yang ada tidak berfungsi secara permanen. (Ini mungkin bekerja sampai Anda menutup VS, tetapi setelah itu, semuanya menjadi sangat kacau.)

Kuncinya adalah menjaga localhost yang ada mengikat dan menambahkan ikatan baru setelahnya.

Kecuali Anda menjalankan sebagai administrator, Anda juga harus menjalankan netsh add urlacl(untuk memberi Anda izin menjalankan situs non-localhost sebagai pengguna standar).

Jika Anda ingin mengizinkan nama host apa pun, proses lengkapnya adalah sebagai berikut:

  1. Buat aplikasi web Anda, dan cari tahu port apa yang digunakannya (lihat properti proyek, tab Web, Project Url).
  2. Dari prompt administrator, jalankan perintah berikut (ganti portnumber dengan nomor port yang Anda temukan di # 1):

    netsh http add urlacl url="http://*:portnumber/" user=everyone
    netsh http add urlacl url="http://localhost:portnumber/" user=everyone
    

Anda juga dapat menggunakan nama pengguna Anda (DOMAIN \ USER) alih-alih semua orang untuk keamanan yang lebih baik.

  1. Buka applicationhost.config (biasanya di bawah My Documents \ IIS Express \ config), dan temukan elemen dengan nomor port Anda.
  2. Tambahkan satu lagi ikatan dengan nama host yang Anda inginkan (dalam hal ini, *). Sebagai contoh:

    <site name="MvcApplication1" id="2">
        <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\sites\MvcApplication1" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:12853:localhost" />
            <binding protocol="http" bindingInformation="*:12853:*" />
        </bindings>
    </site>
    

Perhatikan bahwa, jika ingin membuka semua nama host (*), Anda memerlukan dua perintah netsh (satu untuk * dan satu untuk localhost). Jika Anda hanya ingin membuka nama host tertentu, Anda tidak benar-benar membutuhkan perintah netsh kedua (localhost); satu-satunya dengan nama host spesifik Anda sudah cukup.

dmatson
sumber
Lakukan hal yang sama (pendekatan 1), saat browsing ke mycustomhost: myportnr saya mendapatkan "Layanan Tidak Tersedia". VS2012. Saya tidak dapat mencoba yang ke-2 karena tidak ada IIS Express di bawah "My Documents" dan applicationhost.config yang saya temukan di c: \ Program files \ IIS Express tidak memiliki konfigurasi untuk aplikasi web saya ...
firepol
2
Dengan VS2013, saya menemukan bahwa konfigurasi ini hanya berfungsi jika saya menjalankannya sebagai admin! (Berjalan sebagai non-admin, IIS Express tampaknya mengabaikan pengikatan ke-2 - jika saya membuka UI-nya dari ikon notifikasi, IIS menunjukkan situs saya berjalan, tetapi hanya menunjukkan pengikatan pertama, dan saya hanya dapat menggunakan localhost ... Jika Saya menjalankan sebagai admin, ini menunjukkan kedua binding di UI, dan keduanya berfungsi.) Saya telah menambahkan urlacl dengan netsh, tetapi ini tampaknya tidak membuat perbedaan - IIS Express tampaknya tidak mencoba dan mengikat apa pun selain localhost jika tidak meningkat.
Ian Griffiths
Menambahkan catatan dengan *memecahkan "Layanan Tidak Tersedia" untuk saya.
Jerone
Bagaimana dengan skenario yang Anda butuhkan untuk menggunakan HTTPS pada port 443?
Kixoka
@ Kixoka Saya mencoba menjalankan HTTPS. Saya berhasil membuatnya tetapi browser mengeluh bahwa sertifikat tidak cocok dengan domain. Saya melewati itu tetapi semua sumber daya kemudian gagal memuat sehingga tidak ada gambar, skrip atau CSS.
Prime By Design
24

Nama host yang tidak valid menunjukkan bahwa situs aktual yang Anda konfigurasi dalam file konfigurasi IIS Express (kemungkinan besar) tidak berjalan. IIS Express tidak memiliki model proses seperti IIS.


Agar situs Anda dapat menjalankannya, harus dimulai secara eksplisit (baik dengan membuka dan mengakses dari webmatrix, atau dari perintah baris yang memanggil iisexpress.exe (dari direktori instalasi itu) dengan parameter / situs.


Secara umum, langkah-langkah untuk memungkinkan nama DNS berkualifikasi penuh untuk digunakan untuk akses lokal adalah Mari kita gunakan contoh Anda dari nama DNS dev.example.com

  1. edit% windows% \ system32 \ drivers \ etc \ hosts file untuk memetakan dev.example.com ke 127.0.0.1 (diperlukan hak istimewa admin). Jika Anda mengontrol server DNS (seperti dalam kasus Nick) maka entri DNS sudah cukup karena langkah ini tidak diperlukan.
  2. Jika Anda mengakses internet melalui proksi, pastikan dev.example.com tidak akan dikomunikasikan ke proksi (Anda harus memasukkan daftar pengecualian di browser Anda (untuk IE itu adalah Tools / Opsi Internet / Koneksi / Pengaturan Lan, kemudian buka Proxy Server / Advanced dan masukkan dev.example.com pada daftar pengecualian.
  3. Konfigurasikan IIS Express yang mengikat untuk situs Anda (misalnya: Site1) untuk menyertakan dev.example.com. Hak administratif akan diperlukan untuk menggunakan penjilidan. Atau, reservasi URL satu kali dapat dilakukan dengan menggunakan http.sys

    netsh http add urlacl url=http://dev.example.com:<port>/ user=<user_name>

  4. mulai iisexpress /site:Site1atau buka Site1 di WebMatrix

Jaro Dunajsky
sumber
2
Halo Jaro, terima kasih atas bantuannya, tetapi 127.0.0.1 diatur dalam DNS saya bukan file host sehingga semua pengembang memiliki akses yang sama. Kedua, saya tidak dapat memulai debugging di VS, kecuali jika pengikatannya diatur sebagai "*: 1234: localhost" yang merupakan pengaturan yang sama sekali tidak berguna, karena terikat ke semua alamat IP pada mesin saya tetapi hanya menerima header host dari "localhost ". Mengapa mereka tidak melakukan "127.0.0.1:1234:" dan menghindari semua omong kosong ini. Header host tidak diperlukan selama IP dan port menyelesaikan. Dan berlari sebagai Admin hanya sangat menyebalkan bagi tim besar. Apa bencana IIS Express.
Nick Berardi
1
Juga sebagai referensi Bad Request - Invalid Hostnameberarti bahwa nama host yang saya coba gunakan tidak dapat menyelesaikan karena tim IIS Express dalam kebijaksanaan tak terbatas mereka memutuskan untuk secara khusus memanggil "localhost" sebagai satu-satunya header host yang akan berfungsi. Dan VS tidak akan membiarkan Anda menjalankannya dengan cara lain selain "*: 1234: localhost"
Nick Berardi
2
Saya mendengar Anda tentang masalah 127.0.0.1. "Localhost" di dalam binding jelas merepotkan karena tidak menyertakan traffic untuk 127.0.0.1 . Desain dibatasi oleh kontrak http.sys (http protocol handler) hari ini yang hanya mengenali "localhost" untuk penggunaan non-administratif. Persyaratan admin saja dapat dikurangi dengan reservasi URL satu kali dengan http.sys (akan memperbarui informasi di atas). Tolong beri tahu saya kalau Anda menggunakan Visual Studio (itu VS2010 dengan SP1 Beta?). Mari kita coba selesaikan ini lagi dan (semoga) menyelesaikan masalah ini.
Jaro Dunajsky
catatan - jika Anda melihat kesalahan netsh.exe 87 parameternya salah - mungkin karena Anda menghapus jalur URI (/) setelah nama host Anda.
Tim Lovell-Smith
19

Pada saya WebMatrix IIS Express install berubah dari "*:80:localhost"ke "*:80:custom.hostname"tidak bekerja ( "Bad Hostname", bahkan dengan tepat etc \ host pemetaan), tapi "*:80:" melakukan pekerjaan - dan dengan tidak ada langkah-langkah tambahan yang diperlukan oleh jawaban yang lain di sini. Catatan yang "*:80:*"tidak akan melakukannya; tinggalkan tanda bintang kedua.

rymo
sumber
3
uuuum, jadi "*:80:*"bekerja untuk saya, tetapi kemudian saya me-restart komputer saya dan tiba-tiba tidak berfungsi sampai saya mengubahnya "*:80:"dan semuanya baik-baik saja! Terima kasih.
CWSpear
2
Akhirnya!! Juga ikuti semua langkah di tempat lain, dan menghapus * pada akhirnya membuatnya berhasil, terima kasih!
Charles Philip
Hanya di sini untuk mengatakan bahwa ini berhasil untuk saya. Saya mencoba jawaban yang diterima dan mengembalikan semua perubahan ke apa yang Anda katakan dan semua bekerja dengan baik. Saya menggunakan VS2013 Update4.
JasonWilczak
Ini sepertinya bekerja dengan sempurna. Saat menggunakan VS2017, saya tidak yakin apa yang harus ditempatkan di Url Proyek untuk menuliskannya di file applicationhost.config? Apakah mungkin diatur melalui VS IDE?
Jim
8

Saya mencoba untuk mengintegrasikan Alamat IP publik ke dalam alur kerja saya dan jawaban ini tidak membantu (saya suka menggunakan IDE sebagai IDE). Tetapi hal di atas menuntun saya ke solusi (setelah sekitar 2 jam memukuli kepala saya di dinding untuk mengintegrasikannya dengan Visual Studio 2012 / Windows 8) inilah yang akhirnya bekerja untuk saya.

applicationhost.config dibuat oleh VisualStudio di bawahC:\Users\usr\Documents\IISExpress\config

    <site name="MySite" id="1">
        <application path="/" applicationPool="Clr4IntegratedAppPool">
            <virtualDirectory path="/" physicalPath="C:\Users\usr\Documents\Visual Studio 2012\Projects\MySite" />
        </application>
        <bindings>
            <binding protocol="http" bindingInformation="*:8081:localhost" />
            <binding protocol="http" bindingInformation="*:8082:localhost" />
            <binding protocol="http" bindingInformation="*:8083:192.168.2.102" />
        </bindings>
    </site>
  • Setel IISExpress agar dijalankan Administratoragar dapat mengikat ke alamat luar (bukan host lokal)
  • Jalankan Visual Stuio sebagai Administratorsehingga dapat memulai proses sebagai administrator yang memungkinkan pengikatan berlangsung.

Hasil akhirnya adalah Anda dapat menelusuri 192.168.2.102 dalam case dan test saya (misalnya di emulator Android. Saya sangat berharap ini membantu orang lain karena ini jelas merupakan proses yang menjengkelkan bagi saya.

Rupanya itu adalah fitur keamanan yang ingin saya lihat dinonaktifkan.

Daniel B. Chapman
sumber
8

Seperti Jessa Flint di atas , saya tidak ingin mengedit secara manual .vs \ config \ applicationhost.config karena saya ingin perubahan tetap ada dalam kontrol sumber. Saya juga tidak ingin memiliki file batch yang terpisah. Saya menggunakan VS 2015 .

Properti Proyek → Bangun Acara → Baris perintah acara pra-bangun: Tangkapan layar properti proyek


::The following configures IIS Express to bind to any address at the specified port

::remove binding if it already exists
"%programfiles%\IIS Express\appcmd.exe" set site "MySolution.Web" /-bindings.[protocol='http',bindingInformation='*:1167:'] /apphostconfig:"$(SolutionDir).vs\config\applicationhost.config"

::add the binding
"%programfiles%\IIS Express\appcmd.exe" set site "MySolution.Web" /+bindings.[protocol='http',bindingInformation='*:1167:'] /apphostconfig:"$(SolutionDir).vs\config\applicationhost.config"

Pastikan Anda mengubah nomor port ke port yang Anda inginkan.

Jon
sumber
Satu tambahan kecil di sini. Pastikan Anda membuat aturan untuk membuka port itu di Windows Firewall Anda. Kemudian itu bekerja seperti pesona!
Peter M
Saya suka jawaban Anda karena mengedit .vs \ config \ applicationhost.config tidak layak ketika beberapa pengembang menjalankan IIS Express di mesin mereka sendiri. Terima kasih!
Colin
6

Jawaban yang dipilih adalah valid .. dan informasi ini cukup membantu saya. Saya tahu topik ini telah dibahas sebelumnya tetapi saya ingin menambahkan beberapa masukan tambahan. Orang-orang mengatakan bahwa Anda harus "mengedit secara manual" file application.config di direktori Users IISExpress / Config. Ini adalah masalah besar bagi saya karena saya ingin mendistribusikan konfigurasi melalui kontrol Sumber ke berbagai pengembang.

Apa yang saya temukan adalah Anda dapat mengotomatiskan pembaruan file ini menggunakan program "C: \ Program Files \ IIS Express \ appcmd.exe". Butuh beberapa saat untuk mengetahui parameter kontrol tetapi saya akan membagikan temuan saya di sini. Pada dasarnya Anda dapat membuat file .bat yang menjalankan perintah NETSH dan APPCMD.EXE (dan mungkin menukar file host jika Anda mau) untuk membuat konfigurasi header host mudah dengan IIS Express.

File bat instalasi Anda akan terlihat seperti ini:

netsh http add urlacl url=http://yourcustomdomain.com:80/ user=everyone 

"C:\Program Files\IIS Express\appcmd.exe" set site "MyApp.Web" /+bindings.[protocol='http',bindingInformation='*:80:yourcustomdomain.com']

Saya juga akan membuat file bat "Uninstall" yang akan membersihkan binding ini .. (karena sering kali saya hanya memalsukan DNS sehingga saya dapat bekerja pada kode yang sensitif terhadap nama host)

netsh http delete urlacl url=http://yourcustomdomain.com:80/

"C:\Program Files\IIS Express\appcmd.exe" set site "MyApp.Web" /-bindings.[protocol='http',bindingInformation='*:80:yourcustomdomain.com']

Saya harap informasi ini bermanfaat bagi seseorang .. Butuh sedikit waktu untuk mengungkap.

Jesse Flint
sumber
4

Mengikuti saran Jaro, saya bisa menjalankan ini di bawah Windows XP dan IIS Express (diinstal melalui Web Matrix) dengan modifikasi kecil dan tidak terbatas hanya pada localhost. Ini hanya masalah pengaturan binding dengan benar.

  1. Gunakan WebMatrix untuk membuat situs baru dari folder di root aplikasi web Anda.
  2. Tutup WebMatrix.
  3. Buka %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config (Windows XP. Vista dan 7 jalur akan serupa) dan edit definisi situs di <sites>blok konfigurasi agar sesuai dengan yang berikut:

    <site name="DevExample" id="997005936">
        <application path="/" applicationPool="Clr2IntegratedAppPool">
            <virtualDirectory
                path="/"
                physicalPath="C:\path\to\application\root" />
        </application>
        <bindings>
            <binding
                protocol="http"
                bindingInformation="*:80:dev.example.com" />
        </bindings>
        <applicationDefaults applicationPool="Clr2IntegratedAppPool" />
    </site>

Jika menjalankan MVC, maka pertahankan applicationPool diatur ke salah satu opsi "Terintegrasi".

Neil Monroe
sumber
3

Solusi David baik. Tapi saya menemukan <script>alert(document.domain);</script>di halaman masih peringatan "localhost" karena Project Url masih localhost bahkan jika sudah ditimpa http://dev.example.com. Masalah lain yang saya temui adalah ia memberi tahu saya bahwa port 80 sudah digunakan bahkan jika saya telah menonaktifkan Skype menggunakan nomor port 80 seperti yang direkomendasikan oleh David Murdoch. Jadi saya telah menemukan solusi lain yang jauh lebih mudah:

  1. Jalankan Notepad sebagai administrator, dan buka host C: \ Windows \ System32 \ drivers \ etc \, tambahkan 127.0.0.1 mydomain, dan simpan file;
  2. Buka proyek web dengan Visual Studio 2013 (Catatan: harus juga dijalankan sebagai administrator), klik kanan proyek -> Properti -> Web, (mari kita anggap Url Proyek di bawah opsi "IIS Express" adalah http://localhost:33333/), lalu ubah dari http://localhost:33333/untukhttp://mydomain:333333/ Catatan: Setelah perubahan ini, Anda harus tidak mengklik "Buat virtual Directory" tombol di sebelah kanan kotak Proyek Url atau klik tombol Save dari Visual Studio karena mereka tidak akan berhasil. Anda dapat menyimpan pengaturan Anda setelah langkah 3 berikutnya.
  3. Buka% USERPROFILE% \ My Documents \ IISExpress \ config \ applicationhost.config, cari "33333: localhost", kemudian perbarui ke "33333: mydomain" dan simpan file.
  4. Simpan pengaturan Anda sebagaimana disebutkan dalam langkah 2.
  5. Klik kanan halaman web di studio visual Anda, dan klik "Lihat di Browser". Sekarang halaman tersebut akan dibuka di bawah http://mydomain:333333/, dan <script>alert(document.domain);</script>di halaman tersebut akan mengingatkan "domain saya".

Catatan: Nomor port yang tercantum di atas diasumsikan 33333. Anda harus mengubahnya ke nomor port yang ditetapkan oleh studio visual Anda.

Diedit pos: Hari ini saya mencoba dengan nama domain lain dan mendapatkan kesalahan berikut: Tidak dapat meluncurkan server Web IIS Express. Gagal mendaftarkan URL ... Akses ditolak. (0x80070005) . Saya keluar dari IIS Express dengan mengklik kanan ikon IIS Express di sudut kanan di bilah tugas Windows, dan kemudian memulai kembali studio visual saya sebagai administrator, dan masalahnya hilang.

wcb1
sumber
1
sekarang, ini adalah jawaban yang harus dianggap sebagai solusi yang tepat! Pastikan Anda mengedit applicationhost.config yang terletak di .vs / config jika Anda menggunakan visual studio 2015.
Fabio Salvalai
1

Saya mencoba semua hal di atas, tidak ada yang berhasil. Apa yang menyelesaikan masalah ini adalah menambahkan binding IPv6 di file host. Pada langkah 5 dari jawaban @David Murdochs, tambahkan dua baris alih-alih satu, yaitu:

127.0.0.1 dev.example.com
::1 dev.example.com

Saya menemukan jawabannya dengan memeriksa $ ping localhostdari baris perintah, yang digunakan untuk mengembalikan:

Reply from 127.0.0.1: bytes=32 time<1ms TTL=128

Sebaliknya, sekarang mengembalikan:

Reply from ::1: time<1ms

Saya tidak tahu mengapa, tetapi karena alasan tertentu IIS Express mulai menggunakan IPv6 alih-alih IPv4.

Morten Aslo-Petersen
sumber
0

Meninggalkan ini di sini kalau-kalau ada yang butuh ...

Saya perlu memiliki domain khusus untuk pengaturan Wordpress Multisite di IIS Express tetapi tidak ada yang berhasil sampai saya menjalankan Webmatrix / Visual Studio sebagai Administrator. Lalu saya bisa mengikat subdomain ke aplikasi yang sama.

<bindings> 
    <binding protocol="http" bindingInformation="*:12345:localhost" />
    <binding protocol="http" bindingInformation="*:12345:whatever.localhost" />
</bindings>

Lalu pergi ke http: //wh whatever.localhost: 12345 / akan berjalan.

MW247
sumber