Özel Etki Alanlarını IIS Express ile Kullanma


304

Geleneksel olarak localhost geliştirme sunucumla özel etki alanları kullanıyorum. Çizgileri boyunca bir şey:

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

Bu, Facebook gibi harici API'lerle çalışırken bana bir ton esneklik sağladı. Bu, geçmişte yerleşik Visual Studio Development Server ile harika çalıştı, çünkü tek yapmam gereken işaret eden DNS kayıtlarına bir CNAME eklemekti 127.0.0.1.

Ancak bunu IIS Express ile çalıştıramadım. Denediğim her şey başarısız olmuş gibi görünüyor. applicationHost.configIIS Express için dosyaya doğru XML yapılandırmasını bile ekledim , ancak girişleri IIS'nin gerçek yüklemesi kadar geçerli olarak tanımıyor gibi görünmüyor.

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

Bu satıra girip istemeyi denediğimde http://dev.example.com:1288şu mesajı alıyorum:

Hatalı İstek (Geçersiz Sunucu Adı

Açık bir şeyi kaçırıp kaçırmadığımı bilen var mı? Yoksa IIS Express ekibi bu tür kullanımları görmek için öngörüye sahip değil miydi?


Uygulama düğümünün applicationPool özniteliğinin "Clr2IntegratedAppPool" veya "Clr4IntegratedAppPool" olarak ayarlandığından emin olun. "Clr2ClassicAppPool" veya "Clr4ClassicAppPool" kullanırken gördüğünüz Kötü Ana Bilgisayar Adı hatasını aldım.
Neil Monroe

karıştı - CNAME kayıtları IP adreslerini değil, diğer ana bilgisayar adlarını kabul eder. Şunu mu demek istedin A record?
Scott Coates

1
Bununla ilgili birçok sorunum vardı ve IIS Express yerine IIS'yi kullanmanın çok daha kolay olduğunu
gördüm

Ben de bununla karşılaştım. Sadece port numarasına bakıp alan adını görmezden gelmesini umuyordum. Böyle bir şans yok. Limanda "tümünü kabul et" seçeneğini etkinleştirebilseydim ....
Brady Moritz

Şimdi oyla! Bir UserVoice önerisi ekledim: visualstudio.uservoice.com/forums/121579-visual-studio/…
Luke Puplett

Yanıtlar:


367

Benim için işe yarayan buydu (VS 2013 için güncellendi, VS 2010 için düzeltme geçmişine bakın, VS 2015 için şuna bakın: https://stackoverflow.com/a/32744234/218971 ):

  1. Web Uygulama Projenizi sağ tıklayın ▶ PropertiesWeb, ardından Serversbölümü aşağıdaki gibi yapılandırın :
    • Açılır IIS Express ▼menüden seçim yapın
    • Proje URLsi: http://localhost
    • Uygulama kök URL'sini geçersiz kıl: http://dev.example.com
    • Tıklayın Create Virtual Directory(burada bir hata alırsanız IIS 5/6/7/8'i devre dışı bırakmanız, IIS'leri Default Sitebağlantı noktası dışında bir şeyle değiştirmeniz :80, Skype'ın bağlantı noktası 80'i kullanmadığından emin olmanız gerekebilir )
  2. İsteğe bağlı olarak: Set Start URLiçinhttp://dev.example.com
  3. Açık %USERPROFILE%\My Documents\IISExpress\config\applicationhost.configiçinde (Windows XP, Vista ve 7) ve düzenleme site tanımı <sites>yapılandırma bloğunun aşağıdakilerden çizgisinde olmak:

    <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. MVC çalıştırıyorsanız: applicationPool"Entegre" seçeneklerinden birine ("Clr2IntegratedAppPool" gibi) ayarlandığından emin olun .

  5. hostsDosyanızı açın ve satırı ekleyin 127.0.0.1 dev.example.com.
  6. ► Start başvurunuz!

Yorumlardan bazı harika tavsiyeler:

  • Visual Studio'yu Yönetici olarak çalıştırmanız gerekebilir.
  • Başka geliştiriciler yapmak istiyorsanız IIS'nizin çalıştığını görün netsh http add urlacl url=http://dev.example.com:80/ user=everyone
  • Sitenin tüm ana bilgisayarlar için çözülmesini istiyorsanız ayarlayın bindingInformation="*:80:". İstediğiniz herhangi bir bağlantı noktasını kullanın, 80 sadece uygundur.

12
Bu tam olarak yaptığım şeydi, bunu yazmak üzereydim, ama beni yumruk attı :-) Yan not olarak, diğer geliştiricilerin IIS'nizi görmesine izin vermek istiyorsanız "netsh http add" urlacl url = dev.example.com:80 kullanıcı = herkes "
EBarr

6
Ayrıca, site tüm ana bilgisayarlar için çözümlemek istiyorsanız, kullanabilirsiniz: bağlayıcıInformation = "*: 80:" Bunu localtunnel.com çalışır böylece kullanın.
Lance Fisher

17
Erişim reddedildi hatası alıyordum. VS 2012'yi yönetici olarak çalıştırmak sorunu düzeltti.
xanadont

3
IIS Express'in hangi sürümü bu? VS2012 çalıştırıyorum (ki bu IIS Express 8.0 olduğuna inanıyorum) ve Web özellikleri sayfasının "Sunucular" alanının altındaki "Yerel IIS Sunucusu Kullan" radyo düğmesini tıklattığımda IIS Express Kullan onay kutusunu tıklatıp deneyin " mydev.example.com " yazıp "Sanal Dizin Oluştur" düğmesine basmak için bu hatayı alıyorum "Sanal dizin oluşturulamıyor. mydev.example.com Web sitesi oluşturulamıyor". Sunucu adı için "localhost" belirtmelisiniz.
Michael McCarthy

12
Bu karmaşık. Kişi birkaç farklı yerdeki değişimleri değiştirmelidir. Gerçek bir karmaşa yapmak kolaydır. Gerçekten daha basit bir yol yok mu?
Anderson

151

İçin Visual Studio 2015 üzerinde cevapları adımlar uygulamak ancak applicationhost.configdosya yeni bir konuma sahiptir. "Çözüm" klasörünüzde yolu izleyin, bu yükseltme yaparsanız ve applicationhost.configmakinenizde İKİ sürümünün olması kafa karıştırıcıdır .

\.vs\config

Bu klasör içinde applicationhost.config dosyanızı göreceksiniz

Alternatif olarak, çözüm klasörünüzde .config dosyasını arayabilir ve bu şekilde bulabilirsiniz.

Şahsen aşağıdaki yapılandırmayı kullandım:

resim açıklamasını buraya girin

Hosts dosyamda aşağıdakiler var:

127.0.0.1       jam.net
127.0.0.1       www.jam.net

Ve applicationhost.config dosyamda aşağıdakiler var:

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

Visual studio 2015 örneğinizi yönetici olarak çalıştırmayı unutmayın! Bunu her seferinde yapmak istemiyorsanız, bunu tavsiye ederim:

Visual Studio varsayılan olarak yönetici olarak nasıl çalıştırılır

Umarım bu birisine yardımcı olur, visual studio 2015'e yükseltmeye çalışırken sorunlar yaşadım ve konfigürasyonlarımın hiçbirinin aktarılmadığını fark ettim.


9
Kritik kısım, diğer birçok cevapta önerildiği gibi varsayılanı değiştirmek yerine ikinci bağlayıcıyı eklemektir . Ve VS'yi gerçekten yönetici olarak çalıştırmalısınız (sic!). Teşekkür ederim. *:49707:*:49707:localhost
fracz

3
Ayrıca http://jam.127.0.0.1.xip.io/, hosts dosyanızı değiştirmek istemiyorsanız gibi bir URL de kullanabilirsiniz . Ayrıca, hiçbir ortak çalışanın kendi ayarlarını değiştirmesi gerekmez. Bkz xip.io .
Zack Martin

1
".Vs" klasörünün gizli olduğunu ve ilk başta görünür kılınması gerektiğini düşünüyorum
Hayal Kırıklığı

3
Bunun Visual Studio 2017'de de çalıştığını doğruladım. İlginç bir şekilde, her iki <bağlayıcı> öğeye ("localhost" olmadan sadece ilk) gerek yoktu. Visual Studio, ancak, kesinlikle rahatsız edici bir Yönetici olarak çalışıyor olması gerekir
Loren Paulsen

1
Keşke bunu yapmak için idari olarak hiçbir şey yapmasına izin verilmeyenlerin bir yolu olsaydı. Bunu nasıl güvenli bir şekilde etkinleştirebileceklerine dair herhangi bir düşünce olmaksızın yönetici ayrıcalığını yasaklayan işverenler / müşteriler inanılmaz derecede kısa görüşlüdür.
Steve Pettifer

44

Visual Studio 2012'yi IIS Express ile kullanırken, varolan bir bağlayıcıyı değiştirmek kalıcı olarak çalışmaz. (VS'yi kapatana kadar işe yarayabilir, ancak bundan sonra işler gerçekten berbat olur.)

Anahtar, varolan localhost bağlayıcısını tutmak ve ardından yeni bir bağlayıcı eklemektir .

Yönetici olarak çalışmadığınız sürece, çalıştırmanız gerekir netsh add urlacl(yerel kullanıcı olmayan bir siteyi standart kullanıcı olarak çalıştırmak için kendinize izin vermek için).

Herhangi bir ana bilgisayar adına izin vermek istiyorsanız, işlemin tamamı aşağıdaki gibidir:

  1. Web uygulamanızı oluşturun ve hangi bağlantı noktasını kullandığını öğrenin (bkz. Proje özellikleri, Web sekmesi, Proje URL'si).
  2. Yönetici komut isteminde aşağıdaki komutları çalıştırın ( portnumber'ı # 1'de anladığınız port numarası ile değiştirin ):

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

Daha iyi güvenlik için herkes yerine kullanıcı adınızı (DOMAIN \ USER) da kullanabilirsiniz.

  1. Applicationhost.config dosyasını açın (genellikle Belgelerim \ IIS Express \ config altında) ve bağlantı noktası numaranızı içeren öğeyi bulun.
  2. İstediğiniz ana bilgisayar adıyla bir bağlayıcı daha ekleyin (bu durumda, *). Örneğin:

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

Tüm ana bilgisayar adlarını (*) açmak istiyorsanız, iki netsh komutuna ihtiyacınız olacağını unutmayın (biri * için ve biri localhost için). Yalnızca belirli bir ana bilgisayar adını açmak istiyorsanız, kesinlikle ikinci netsh komutuna (localhost) ihtiyacınız yoktur; yalnızca ana bilgisayar adınıza sahip olan yeterlidir.


Aynı şeyi yaptım (1. yaklaşım), mycustomhost: myportnr'a göz atarken "Hizmet Kullanılamıyor" u alıyorum. VS2012. "Belgelerim" altında hiçbir IIS Express ve c: \ Program dosyalarında bulduğum applicationhost.config olarak 2. denemiyorum. IIS Express'in web uygulamam için bir yapılandırması yoktu ...
firepol

2
VS2013 ile, bu yapılandırmanın yalnızca yönetici olarak çalıştırırsam çalıştığını görüyorum! (Yönetici olmayan olarak çalışan IIS Express 2. bağlayıcıyı yok sayıyor gibi görünüyor - UI'sini bildirim simgesinden açarsam, IIS sitemi çalışıyor olarak gösterir, ancak yalnızca ilk bağlayıcıyı gösterir ve yalnızca localhost kullanabilirim ... Yönetici olarak çalışıyorum, UI'de hem bağlamaları hem de her ikisini de gösteriyor.) Netsh ile urlacls ekledim, ancak bu bir fark yaratmıyor gibi görünüyor - IIS Express, localhost dışında bir şey bile denemiyor ve bağlamıyor gibi görünüyor eğer yükseltilmemişse.
Ian Griffiths

*Benim için "Hizmet Kullanılamıyor" ile bir kayıt eklemek çözüldü.
jerone

443 numaralı bağlantı noktasında HTTPS kullanmanız gereken bir senaryoya ne dersiniz?
Kixoka

@Kixoka HTTPS'yi çalıştırmaya çalışıyorum. Çalışmayı başardım ama tarayıcı sertifikanın alan adıyla eşleşmediğinden şikayet ediyor. Bunu geçtim ama tüm kaynaklar daha sonra görüntü, komut dosyası veya CSS yüklenemedi.
Prime By Design

24

Geçersiz ana bilgisayar adı, IIS Express yapılandırma dosyasında yapılandırdığınız gerçek sitenin (büyük olasılıkla) çalışmadığını gösterir. IIS Express'in, IIS gibi bir işlem modeli yoktur.


Sitenizin çalışması için, açık bir şekilde başlatılması gerekir (webmatrix'i açarak ve erişerek veya / site parametresiyle iisexpress.exe'yi (kurulum dizininden) çağıran komut satırından).


Genel olarak, yerel erişim için tam nitelikli DNS adlarının kullanılmasına izin verme adımları dev.example.com DNS adı örneğinizi kullanalım.

  1. % windows% \ system32 \ drivers \ etc \ hosts dosyasını dev.example.com'u 127.0.0.1 ile eşleştirmek için düzenleyin (yönetici ayrıcalığı gerekir). DNS sunucusunu (Nick'in durumunda olduğu gibi) kontrol ediyorsanız, bu adım gerekli olmadığından DNS girişi yeterlidir.
  2. İnternet'e proxy üzerinden erişirseniz, dev.example.com'un proxy'ye izin verilmeyeceğinden emin olun (tarayıcınızdaki istisna listesine girmeniz gerekir (IE için Araçlar / İnternet Seçenekleri / Bağlantılar / Lan Ayarları, daha sonra Proxy Server / Advanced'e gidin ve istisna listesine dev.example.com yazın.
  3. Siteniz için IIS Express bağlamasını (ör. Site1) dev.example.com içerecek şekilde yapılandırın. Bağlamayı kullanmak için yönetici ayrıcalığı gerekecektir. Alternatif olarak, http.sys kullanılarak bir kerelik URL rezervasyonu yapılabilir

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

  4. iisexpress /site:Site1WebMatrix'te Site1'i başlatma veya açma


2
Merhaba Jaro, yardım için teşekkürler, ancak 127.0.0.1 DNS'imde hosts dosyasında değil, tüm geliştiricilerin aynı erişime sahip olması için ayarlanmış. İkincisi, bağlantının makinemdeki tüm IP adreslerine bağlı olduğu, ancak yalnızca "localhost" ana bilgisayar üstbilgilerini kabul ettiği için tamamen işe yaramaz bir kurulum olan "*: 1234: localhost" olarak ayarlanmadığı sürece VS'de hata ayıklamaya başlayamıyorum. ". Neden sadece "127.0.0.1:1234:" yapmadılar ve tüm bu saçmalıklardan kaçındılar. IP ve bağlantı noktası çözümlendiği sürece ana bilgisayar üstbilgilerine gerek yoktur. Yönetici olarak koşmak büyük bir ekip için kıçından büyük bir acıdır. IIS Express ne bir felakettir.
Nick Berardi

1
Ayrıca, bir referans olarak Bad Request - Invalid Hostname, kullanmaya çalıştığım ana bilgisayar adının, sonsuz bilgeliğindeki IIS Express ekibi, çalışacak tek ana bilgisayar üstbilgisi olarak "localhost" ifadesini özellikle çağırmaya karar verdiği için çözülemeyeceği anlamına gelir. Ve VS "*: 1234: localhost" dışında başka bir şekilde çalıştırmanıza izin vermeyecek
Nick Berardi

2
127.0.0.1 sayısında seni duydum. Bağlamadaki "localhost" kesinlikle bir acıdır çünkü 127.0.0.1 için trafik içermez . Tasarım, yalnızca yönetim dışı kullanım için "localhost" u tanıyan http.sys (http protokol işleyicisi) sözleşmesiyle sınırlıdır. Yalnızca yönetici gereksinimi http.sys ile bir kerelik URL rezervasyonu ile azaltılabilir (yukarıdaki bilgileri güncelleyecektir). Lütfen Visual Studio ile tam olarak kullandığınızı bana bildirin (SP1 Beta ile VS2010?). Bunun üzerinde biraz daha çalışmayı deneyelim ve (umarım) sorunu çözelim.
Jaro Dunajsky

not - netsh.exe hata 87'yi görürseniz parametre yanlıştır - ana bilgisayar adınızdan sonra bir URI yolunu (/) atlamış olmanızdan kaynaklanabilir.
Tim Lovell-Smith

19

WebMatrix IIS Express yüklememden yerine değişmedi ("Kötü Ana Bilgisayar Adı", uygun etc \ hosts eşlemeleriyle bile), ancak işe yaradı - ve burada diğer yanıtların gerektirdiği ek adımların hiçbiri "*:80:localhost"olmadan . Bunu yapmayacağını unutmayın ; ikinci yıldız işareti bırak."*:80:custom.hostname""*:80:" "*:80:*"


3
uuuum, bu yüzden "*:80:*"benim için çalıştı, ama sonra bilgisayarımı yeniden başlattım ve ben değiştirene kadar aniden işe yaramazdı ve her şey yolundaydı "*:80:"! Teşekkürler.
CWSpear

2
En sonunda!! Ayrıca başka bir yerde tüm adımları takip etti ve sonunda * kaldırmak işe yaradı, teşekkürler!
Charles Philip

Sadece bunun benim için işe yaradığını söylemek için. Kabul edilen cevabı denedim ve tüm değişiklikleri söylediklerinize geri döndürdüm ve hepsi harika çalışıyor. VS2013 Güncelleme4 kullanıyorum.
JasonWilczak

Bu mükemmel çalışıyor gibi görünüyor. VS2017 kullanırken, bunu uygulamahost.config dosyasına yazmak için Project Url ne koymak emin değilim? VS IDE üzerinden ayarlamak mümkün mü?
Jim

8

Genel IP Adresini iş akışıma entegre etmeye çalışıyordum ve bu cevaplar yardımcı olmadı (IDE'yi IDE olarak kullanmayı seviyorum). Ama yukarıda beni çözüme götürdü (yaklaşık 2 saat sonra kafamı bir duvara çarptıktan sonra bunu Visual Studio 2012 / Windows 8 ile entegre etmek için) işte benim için sonuçlandı.

altında VisualStudio tarafından oluşturulan applicationhost.configC:\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>
  • IISExpress'i şu şekilde çalışacak şekilde ayarlayın: Administrator dış adreslere (yerel ana bilgisayar değil) bağlanabilecek
  • Visual Stuio'yu Administrator, bağlantının gerçekleşmesine izin veren bir yönetici olarak işleme başlayabilmesi için çalıştırın.

Net sonuç 192.168.2.102benim durumumda göz atabilir ve test edebilirsiniz (örneğin bir Android emülatöründe. Umarım bu başka birine yardımcı olur, çünkü bu kesinlikle benim için rahatsız edici bir süreçti.

Görünüşe göre devre dışı görmek isterim bir güvenlik özelliği.


8

Gibi yukarıdaki Jessa Flint , el düzenlemek istemediğini .vs \ config \ applicationhost.config Ben değişiklikler kaynak denetiminde devam istedim çünkü. Ayrıca ayrı bir toplu iş dosyası istemedim. VS 2015 kullanıyorum .

Proje Özellikleri → Derleme Etkinlikleri → Derleme öncesi etkinlik komut satırı: Proje özelliklerinin ekran görüntüsü


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

Bağlantı noktası numarasını istediğiniz bağlantı noktasına değiştirdiğinizden emin olun.


Burada küçük bir ek. Bu bağlantı noktasını Windows Güvenlik Duvarınızda açmak için kurallar oluşturduğunuzdan emin olun. Sonra bir cazibe gibi çalıştı!
Peter M

Cevabınızı seviyorum çünkü birden fazla geliştirici kendi makinelerinde IIS Express çalıştırdığında .vs \ config \ applicationhost.config dosyasını düzenlemek mümkün değildir. Teşekkür ederim!
Colin

6

En çok oylanan cevap geçerlidir .. ve bu bilgiler bana biraz yardımcı oldu. Bu konunun daha önce tartışıldığını biliyorum, ancak bazı ek girdiler eklemek istedim. Kullanıcılar, Users.Express / Config dizinindeki application.config dosyasını "el ile düzenlemeniz" gerektiğini söylüyor. Bu benim için büyük bir sorundu çünkü yapılandırmayı Kaynak kontrolü yoluyla çeşitli geliştiricilere dağıtmak istedim.

Bulduğum şey, "C: \ Program Files \ IIS Express \ appcmd.exe" programını kullanarak bu dosyanın güncellenmesini otomatikleştirebilmenizdir. Kontrol parametrelerini bulmak biraz zaman aldı ama bulgularımı burada paylaşacağım. Esasen, IIS Express ile ana bilgisayar üstbilgisi yapılandırmasını kolaylaştırmak için hem NETSH komutunu hem de APPCMD.EXE'yi çalıştıran (ve isterseniz bir ana makine dosyasını değiştirebilirsiniz) bir .bat dosyası oluşturabilirsiniz.

Kurulum bat dosyanız aşağıdaki gibi görünecektir:

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

Ben de bu bağları temizleyecek bir "Kaldır" yarasa dosyası yapacak .. (çünkü çoğu kez ben sadece DNS taklit böylece ana bilgisayar adına duyarlı kod üzerinde çalışabilirsiniz)

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

Umarım bu bilgiler birisine yardımcı olur .. Ortaya çıkarmam biraz zaman aldı.


4

Jaro'nun tavsiyesinden sonra, bu çalışmayı küçük bir değişiklikle Windows XP ve IIS Express (Web Matrix aracılığıyla yüklenmiş) altında çalıştırabildim ve sadece localhost ile sınırlı değildi. Bu sadece bağlantıları doğru bir şekilde ayarlamak meselesidir.

  1. Web uygulaması kökünüzdeki klasörden yeni bir site oluşturmak için WebMatrix'i kullanın.
  2. WebMatrix'i kapatın.
  3. Açık %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config (Windows XP. Vista ve 7 yolları benzer olacaktır) ve <sites>yapılandırma bloğundaki site tanımını aşağıdakilerin çizgileri boyunca olacak şekilde düzenleyin :

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

MVC çalıştırıyorsanız, applicationPool'u "Integrated" seçeneklerinden birine ayarlanmış olarak tutun.


3

David'in çözümü iyi. Ama buldum <script>alert(document.domain);</script>sayfa hala hala "localhost" uyarılar çünkü Proje URL'si geçersiz kılınmış olsa bile hala localhost http://dev.example.com. Karşılaştığım başka bir sorun da, David Murdoch tarafından önerilen 80 bağlantı noktası numarasını kullanarak Skype'ı devre dışı bırakmış olsam bile 80 numaralı bağlantı noktasının kullanımda olduğunu bildiriyor. Bu yüzden çok daha kolay başka bir çözüm buldum:

  1. Not Defteri'ni yönetici olarak çalıştırın ve C: \ Windows \ System32 \ drivers \ etc \ hosts dosyasını açın, 127.0.0.1 etki alanımı ekleyin ve dosyayı kaydedin;
  2. Web projesini Visual Studio 2013 ile açın (Not: yönetici olarak da çalıştırılmalıdır), projeye sağ tıklayın -> Özellikler -> Web, ("IIS Express" seçeneğinin altındaki Proje URL'sini varsayalım http://localhost:33333/) ve ardından değiştirin http://localhost:33333/içinhttp://mydomain:333333/ not: Bu değişikliğin ardından, ne Projesi URL kutusunun sağındaki "Sanal dizin oluştur" butonuna tıklayın ne de başarılı olmayacak gibi Visual Studio kaydet butonuna tıklamalısınız. Sonraki adım 3'ten sonra ayarlarınızı kaydedebilirsiniz.
  3. % USERPROFILE% \ Belgelerim \ IISExpress \ config \ applicationhost.config dosyasını açın, "33333: localhost" için arama yapın, sonra "33333: alanım" olarak güncelleyin ve dosyayı kaydedin.
  4. 2. adımda belirtildiği gibi ayarlarınızı kaydedin.
  5. Görsel stüdyonuzdaki bir web sayfasını sağ tıklayın ve "Tarayıcıda Görüntüle" yi tıklayın. Şimdi sayfa altında açılacak http://mydomain:333333/ve <script>alert(document.domain);</script>sayfada "alan adım" ı uyaracaktır.

Not: Yukarıda listelenen bağlantı noktası numarasının 33333 olduğu varsayılır. Görsel stüdyo tarafından ayarlanan bağlantı noktası numarasına değiştirmeniz gerekir.

Yayın düzenlendi: Bugün başka bir alan adıyla denedim ve aşağıdaki hatayı aldım: IIS Express Web sunucusu başlatılamıyor. URL kaydedilemedi ... Erişim reddedildi. (0x80070005) . Windows görev çubuğunun sağ köşesindeki IIS Express simgesini sağ tıklatarak IIS Express'ten çıkıyorum ve sonra görsel stüdyomu yönetici olarak yeniden başlatıyorum ve sorun giderildi.


1
Şimdi, bu uygun bir çözüm olarak düşünülmelidir cevap! Visual studio 2015 kullanıyorsanız .vs / config dosyasında bulunan applicationhost.config dosyasını düzenlediğinizden emin olun.
Fabio Salvalai

1

Yukarıdakilerin hepsini denedim, hiçbir şey işe yaramadı. Sorunu çözen, hosts dosyasına IPv6 bağları eklemektir. @David Murdochs cevabının 5. adımında, bir yerine iki satır ekleyin, yani:

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

$ ping localhostGeri dönmek için kullanılan komut satırından kontrol ederek anladım :

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

Bunun yerine, şimdi döndürür:

Reply from ::1: time<1ms

Neden bilmiyorum, ama nedense IIS Express IPv4 yerine IPv6 kullanmaya başladı.



0

Bunu herkesin ihtiyacı olması durumunda burada bırakarak ...

IIS Express'te Wordpress Multisite kurulumu için özel etki alanlarına ihtiyacım vardı, ancak Webmatrix / Visual Studio'yu Yönetici olarak çalıştırıncaya kadar hiçbir şey işe yaramadı. Daha sonra alt alanları aynı uygulamaya bağlayabildim.

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

Sonra http: //whatever.localhost: 12345 / adresine gidecek.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.