伝統的に私は自分のlocalhost開発サーバーでカスタムドメインを使います。次の行に沿った何か
dev.example.com
dev.api.example.com
これは私がFacebookのような外部のAPIを使って作業するときの柔軟性を私に与えました。 127.0.0.1
を指すDNSレコードにCNAMEを追加するだけで済むため、これは過去には組み込みのVisual Studio Development Serverでうまく機能しました。
しかし、これをIIS Expressで動作させることはできませんでした。私が試したことはすべて失敗したようです。 IIS Express用のapplicationHost.config
ファイルに正しいXML設定を追加しましたが、IISの実際のインストールほど有効なエントリとして認識されないようです。
<binding protocol="http" bindingInformation="*:1288:dev.example.com" />
この行を入力してhttp://dev.example.com:1288
をリクエストしようとすると、次のメッセージが表示されます。
不正な要求 - 無効なホスト名
誰かが私が明白な何かを見逃しているかどうか知っていますか?それとも、IIS Expressチームは、実際にこの種の用途を理解するのに先見性が欠けていましたか?
これは私にとってうまくいったものです(VS 2013用に更新、2010年の改訂履歴を参照、VS 2015こちらを参照: https://stackoverflow.com/a/ 32744234/218971 ):
Properties
▶Web
を右クリックし、次にServers
セクションを次のように設定します。http://localhost
http://dev.example.com
Default Site
をポート:80
以外に変更する必要があるかもしれません。 Skype isn 'を確認してください。ポート80 などを使用するt)Start URL
をhttp://dev.example.com
に設定します%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(Windows XP、Vista、および7)を開き、<sites>
configブロック内のサイト定義を次の行に沿って編集します。
<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を実行している場合:applicationPool
が「Integrated」オプションのいずれかに設定されていることを確認してください(「Clr2IntegratedAppPool」など)。
hosts
ファイル を開き、行127.0.0.1 dev.example.com
を追加します。コメントからいくつかの素晴らしいアドバイス:
- 管理者としてVisual Studioを実行する必要があります。
- 他の開発者にあなたのIISを見させたい場合は
netsh http add urlacl url=http://dev.example.com:80/ user=everyone
を実行してください。- サイトがすべてのホストについて解決するようにしたい場合は
bindingInformation="*:80:"
を設定します。あなたが望む任意のポートを使用してください、80はちょうど便利です。
Visual Studio 2015の場合、上記の回答の手順は適用されますが、applicationhost.config
ファイルは新しい場所にあります。あなたの "solution"フォルダでパスをたどってください、あなたがアップグレードして、あなたのマシンにapplicationhost.config
の2つのバージョンがあるならば、これは混乱します。
\.vs\config
そのフォルダ内にあなたのapplicationhost.configファイルがあります。
あるいは、ソリューションフォルダで.configファイルを検索してその方法で見つけることもできます。
私は個人的に次の設定を使用しました:
私のhostsファイルに次のように:
127.0.0.1 jam.net
127.0.0.1 www.jam.net
そして、私のapplicationhost.configファイルには以下のものがあります。
<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のインスタンスを管理者として実行することを忘れないでください!毎回これを実行したくない場合は、次のようにしてください。
デフォルトで管理者としてVisual Studioを実行する方法
私はこれが誰かに役立つことを願っています、私はビジュアルスタジオ2015にアップグレードしようとするとき問題を抱えていました、そして、私の構成のどれも引き継がれていないことに気付きました。
IIS Expressを指定してVisual Studio 2012を使用している場合、既存のバインディングをに変更しても永続的に機能しません。 (あなたがVSを閉じるまではうまくいくかもしれませんが、その後は事態が混乱してしまいます。)
重要なのは、既存のlocalhostバインディングを保持し、その後にを追加することです。
管理者として実行しているのでない限り、 netsh add urlacl
を実行する必要があります(ローカルホスト以外のサイトを標準ユーザーとして実行する権限を付与するため)。
任意のホスト名を許可したい場合は、完全なプロセスは次のとおりです。
管理者のプロンプトから、次のコマンドを実行します(portnumberを#1で見つけたポート番号に置き換えます)。
netsh http add urlacl url="http://*:portnumber/" user=everyone
netsh http add urlacl url="http://localhost:portnumber/" user=everyone
セキュリティを強化するために、全員ではなく自分のユーザー名(DOMAIN\USER)を使用することもできます。
必要なホスト名を使用してもう1つバインディングを追加します(この場合は*)。例えば:
<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>
すべてのホスト名(*)を開くには、2つのnetshコマンド(1つは*用、もう1つはlocalhost用)が必要です。特定のホスト名だけを開きたい場合は、2番目のnetshコマンド(localhost)は厳密には必要ありません。特定のホスト名を持つものだけで十分です。
無効なホスト名は、IIS Express設定ファイルで設定した実際のサイトが(おそらく)実行されていないことを示します。 IIS Expressには、IISのようなプロセスモデルはありません。
サイトを実行するには、(webmatrixを開いてアクセスするか、/ siteパラメータを指定してiisexpress.exeを(インストールディレクトリから)呼び出すことで)明示的に開始する必要があります。
一般に、完全修飾DNS名をローカルアクセスに使用できるようにするための手順は、次のとおりです。あなたのDNS名の例dev.example.comを使用しましょう。
あなたのサイトのIISエクスプレスバインディング(例:Site1)にdev.example.comを含めるように設定します。バインディングを使用するには管理者特権が必要です。代わりに、http.sysでワンタイムURL予約を行うことができます。
netsh http add urlacl url=http://dev.example.com:<port>/ user=<user_name>
iisexpress /site:Site1
を起動するか、WebMatrixでSite1を開く
私のWebMatrixでは、IIS高速インストールを"*:80:localhost"
から"*:80:custom.hostname"
に変更してもうまくいきませんでした( "Bad Hostname"、適切なetc\hostsマッピングがあっても)、しかし"*:80:"
しました work - そしてここで他の答えによって必要とされる追加ステップのどれもと。 "*:80:*"
がそれをしないことに注意してください。 2番目のアスタリスクを省きます。
パブリックIPアドレスを自分のワークフローに統合しようとしていましたが、これらの答えは役に立ちませんでした(私はIDEとしてIDEを使いたいのですが)。しかし、上記の方法で解決策を導き出しました(これをVisual Studio 2012/Windows 8と統合するために約2時間壁にぶつかった後)。
applicationhost.config Visual StudioによってC:\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>
Administrator
として実行するように設定し、外部ホスト(ローカルホストではない)にバインドできるようにします。Administrator
としてVisual Stuioを実行します。最終的には、私の場合は192.168.2.102
を参照してテストすることができます(たとえばAndroidエミュレータなど)。これは間違いなく私にとっては苛立たしいプロセスなので、他の人に役立つことを願っています。
どうやらそれは私が無効にして見たいのですがセキュリティ機能です。
投票された回答は有効です..そしてこの情報は私をかなり助けてくれました。私はこのトピックが以前に議論されたことを知っていますが、私はいくつかの追加の入力を加えたいと思いました。ユーザーは、Users IISExpress/Configディレクトリにあるapplication.configファイルを「手動で編集する」必要があると言っています。これは私にとって大きな問題でした。ソース管理を介して構成をさまざまな開発者に配布したいからです。
私が見つけたのは、「C:¥Program Files¥IIS Express¥appcmd.exe」プログラムを使用して、このファイルの更新を自動化できるということです。制御パラメータを見つけるのに時間がかかりましたが、ここで私の発見を共有しています。基本的に、IIS Expressを使用してHostヘッダーの設定を簡単にするために、NETSHコマンドとAPPCMD.EXEの両方を実行する.batファイルを作成することができます。
あなたのインストール用batファイルは次のようになります。
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']
私はまた、これらのバインディングをクリーンアップする「アンインストール」batファイルを作成します。(私はしばしばホスト名に敏感なコードで作業できるようにImをDNSを偽装しているので)
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']
私はこの情報が誰かに役立つことを願っています。
Jaroの助言に従い、私はこれをWindowsのXPとIIS Express(Web Matrix経由でインストール)の下で少し修正することで動作させることができ、localhostだけに限定されませんでした。バインディングを正しく設定するだけの問題です。
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
を開く (Windows XP。Vistaと7つのパスは似ています) そして<sites>
configブロック内のサイト定義を以下の行に沿うように編集します。<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を実行している場合は、applicationPoolを「統合」オプションの1つに設定したままにします。
上記のJessa Flintのように、変更をソース管理に保持したいので、手動で。vs\config\applicationhost.configを編集したくありませんでした。私はまた別のバッチファイルを持ちたくなかった。私はVS 2015を使用しています。
プロジェクトのプロパティ→イベントのビルド→イベントの事前ビルドのコマンドライン:
::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"
ポート番号をご希望のポートに変更してください。
Davidの解決策はいいです。しかし、プロジェクトのURLはhttp://dev.example.com
で上書きされていても、プロジェクトのURLは依然としてローカルホストであるため、ページ内の<script>alert(document.domain);</script>
が依然として「localhost」と警告することがわかりました。私が遭遇するもう一つの問題は、私がDavid Murdochによって推奨されるように80ポート番号を使ってSkypeを無効にしたとしても、ポート80がすでに使われていることを私に警告することです。だから私ははるかに簡単ですもう一つの解決策を考え出しました:
http://localhost:33333/
とします)に変更します。 http://localhost:33333/
からhttp://mydomain:333333/
へ注:この変更後は、プロジェクトのURLボックスの右側にある[仮想ディレクトリの作成]ボタンをクリックしたり、Visual Studioの[保存]ボタンをクリックしたりしても成功しません。次のステップ3の後に設定を保存できます。http://mydomain:333333/
の下に開かれ、ページ内の<script>alert(document.domain);</script>
は "mydomain"を警告します。注:上記のポート番号は33333と想定されています。ビジュアルスタジオで設定したポート番号に変更する必要があります。
編集後:今日、私は別のドメイン名を試してみて、次のエラーを受け取りました:IIS Express Webサーバーを起動できません。 URLの登録に失敗しました...アクセスは拒否されました。 (0x80070005) Windowsタスクバーの右隅にあるIIS Expressアイコンを右クリックしてIIS Expressを終了し、管理者としてVisual Studioを再起動すると問題は解決しました。 。
万が一の場合に備えて、ここに残してください。
IIS ExpressでWordpress Multisiteセットアップ用のカスタムドメインを作成する必要がありましたが、管理者としてWebmatrix/Visual Studioを起動するまで何も機能しませんでした。それから私は同じアプリケーションにサブドメインをバインドすることができました。
<bindings>
<binding protocol="http" bindingInformation="*:12345:localhost" />
<binding protocol="http" bindingInformation="*:12345:whatever.localhost" />
</bindings>
次に http://whatever.localhost:12345 / に移動します。
私はこれにiisexpress-proxy(npmから)を使っていました。