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.config
file 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:1288
saya 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?
sumber
Jawaban:
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 ):
Properties
▶Web
, lalu konfigurasikanServers
bagian sebagai berikut:http://localhost
http://dev.example.com
Default Site
menjadi apa pun selain port:80
, pastikan Skype tidak menggunakan port 80 , dll.)Start URL
kehttp://dev.example.com
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:Jika menjalankan MVC: pastikan
applicationPool
diatur ke salah satu opsi "Terintegrasi" (seperti "Clr2IntegratedAppPool").hosts
file Anda dan tambahkan baris127.0.0.1 dev.example.com
.Beberapa saran bagus dari komentar:
sumber
Untuk Visual Studio 2015 langkah-langkah dalam jawaban di atas berlaku tetapi
applicationhost.config
file berada di lokasi baru. Di folder "solusi" Anda ikuti jalan, ini membingungkan jika Anda memutakhirkan dan akan memiliki DUA versiapplicationhost.config
di mesin Anda.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:
Dengan yang berikut ini di file host saya:
Dan berikut ini di file applicationhost.config saya:
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.
sumber
*:49707:
ikatan kedua alih-alih mengganti default*:49707:localhost
seperti yang disarankan dalam banyak jawaban lainnya. Dan Anda harus menjalankan VS sebagai administrator, memang (sic!). Terima kasih.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 .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:
Dari prompt administrator, jalankan perintah berikut (ganti portnumber dengan nomor port yang Anda temukan di # 1):
Anda juga dapat menggunakan nama pengguna Anda (DOMAIN \ USER) alih-alih semua orang untuk keamanan yang lebih baik.
Tambahkan satu lagi ikatan dengan nama host yang Anda inginkan (dalam hal ini, *). Sebagai contoh:
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.
sumber
*
memecahkan "Layanan Tidak Tersedia" untuk saya.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
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>
mulai
iisexpress /site:Site1
atau buka Site1 di WebMatrixsumber
Bad Request - Invalid Hostname
berarti 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"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.sumber
"*: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.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 bawah
C:\Users\usr\Documents\IISExpress\config
Administrator
agar dapat mengikat ke alamat luar (bukan host lokal)Administrator
sehingga 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.
sumber
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:
Pastikan Anda mengubah nomor port ke port yang Anda inginkan.
sumber
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:
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)
Saya harap informasi ini bermanfaat bagi seseorang .. Butuh sedikit waktu untuk mengungkap.
sumber
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.
%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:Jika menjalankan MVC, maka pertahankan applicationPool diatur ke salah satu opsi "Terintegrasi".
sumber
Solusi David baik. Tapi saya menemukan
<script>alert(document.domain);</script>
di halaman masih peringatan "localhost" karena Project Url masih localhost bahkan jika sudah ditimpahttp://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:http://localhost:33333/
), lalu ubah darihttp://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.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.
sumber
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:
Saya menemukan jawabannya dengan memeriksa
$ ping localhost
dari 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.
sumber
Saya menggunakan iisexpress-proxy (dari npm) untuk ini.
https://github.com/icflorescu/iisexpress-proxy
sumber
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.
Lalu pergi ke http: //wh whatever.localhost: 12345 / akan berjalan.
sumber