517

IIS Expressでリモート要求を有効にするにはどうすればよいですか?スコットガスリーはそれが可能であると書いたが、彼はその方法を言わなかった。

4

26 に答える 26

417

IISチームサイトに、IISExpressでリモート接続を有効にする方法を説明するブログ投稿があります。要約されたその投稿の関連部分は次のとおりです。

VistaおよびWin7では、管理プロンプトから次のコマンドを実行します。

netsh http add urlacl url=http://vaidesg:8080/ user=everyone

XPの場合、最初にWindows XP ServicePack2サポートツールをインストールします。次に、管理プロンプトから次のコマンドを実行します。

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

于 2010-07-29T15:55:30.397 に答える
375

行う必要があるかもしれない3つの変更があります。

  1. IISExpress自体にすべてのIPアドレスとホスト名にバインドするように指示します。あなたの.configファイルで。通常:
    • VS 2015: $(solutionDir)\.vs\config\applicationhost.config
    • <VS 2015:%userprofile%\My Documents\IISExpress\config\applicationhost.config

サイトのバインディング要素を見つけて、追加します

    <binding protocol="http" bindingInformation="*:8080:*" />
  1. 'http.sys'と呼ばれるWindowsのビットをセットアップします。管理者として、次のコマンドを実行します。
    netsh http add urlacl url=http://*:8080/ user=everyone

everyoneWindowsグループはどこにありますか。「Toutlemonde」のようにスペースが含まれるグループには、二重引用符を使用します。

  1. IISExpressがWindowsファイアウォールを通過できるようにします。

    スタート/高度なセキュリティを備えたWindowsファイアウォール/インバウンドルール/新しいルール...

    プログラム%ProgramFiles%\IIS Express\iisexpress.exe
    またはポート8080TCP

開始すると、次iisexpress.exeのようなメッセージが表示されます。

サイト「helloworld」アプリケーション「/」のURL「http:// *:8080/」が正常に登録されました

于 2013-04-04T11:19:56.267 に答える
153

iisexpress-proxyが見つかるまで、何も機能しませんでした。

管理者としてコマンドプロンプトを開き、実行します

npm install -g iisexpress-proxy

それから

iisexpress-proxy 51123 to 81

Visual Studioプロジェクトがlocalhost:51123で開き、外部IPアドレスxxxx:81でアクセスしたいとします。

編集:私は現在使用していますngrok

于 2015-11-10T05:20:25.767 に答える
142

数か月前にこのワークフローを試しているときに、同じ問題が発生したことを覚えています。

そのため、この種のシナリオ専用の単純なプロキシユーティリティを作成しました:https ://github.com/icflorescu/iisexpress-proxy 。

IIS Expressプロキシを使用すると、すべてが非常に簡単になります。「netsh http add urlacl url = vaidesg:8080 / user = everyone」や、「applicationhost.config」を台無しにする必要はありません。

コマンドプロンプトでこれを発行するだけです。

iisexpress-proxy 8080 to 3000

…そして、リモートデバイスをhttp:// vaidesg:3000に向けることができます。

ほとんどの場合、単純な方が優れています。

于 2015-04-30T15:23:59.607 に答える
41

Visual Studioを使用している場合は、次の手順に従って、IIS-ExpressoverIP-Adressにアクセスします。

  1. ホストのIPアドレスを取得する:ipconfigWindowsコマンドラインで
  2. GoTo

    $(SolutionDir)\.vs\config\applicationHost.config
    
  3. 探す

    <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. 追加: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    IPアドレスを使用

  5. 管理者権限でVisualStudioを実行すると、すべてが機能するはずです
  6. リモートから接続しようとする場合は、ファイアウォールの問題を探すかもし​​れません
于 2017-03-31T07:33:15.787 に答える
37

これの補足として:

netsh http add urlacl url=http://vaidesg:8080/ user=everyone

これは、英語版のWindowsでのみ機能します。ローカライズされたバージョンを使用している場合は、「全員」を別のものに置き換える必要があります。次に例を示します。

  • オランダ語版を使用する場合の「Iedereen」
  • ドイツ語版を使用する場合の「Jeder」
  • ハンガリー語版使用時の「ミンデンキ」

そうしないと、エラーが発生します(SDDLの作成に失敗しました、エラー:1332)

于 2013-05-12T14:01:06.037 に答える
32

優れたリソースは、Scott HanselmanによるIISExpressを使用すると、開発時にSSLを使用する方が簡単です。

あなたが求めているのは、IISExpressをポート80を介して外部で提供するためのセクションです。

于 2011-05-25T04:12:57.923 に答える
25

Visual Studio Professional2015に「ConveyorbyKeyoti」をインストールすることで解決しました。Conveyorは、外部要求を有効にするポート(45455)を使用してREMOTEアドレス(IP)を生成します。例:

ここに画像の説明を入力してください

http://10.0.2.2:<hostport>Conveyorを使用すると、ネットワーク上の外部のタブレットや電話から、またはAndroidエミュレーター(なし)からWebアプリケーションをテストできます。

手順は次のリンクにあります。

https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti

于 2017-06-19T20:05:59.467 に答える
11

私を助けたのは、「IISExpress」アイコン「すべてのアプリケーションを表示」を右クリックすることでした。次に、Webサイトを選択すると、どのaplicationhost.configが使用されているかがわかり、修正は完全に行われました。

IISExpress構成

于 2016-11-18T08:31:53.480 に答える
11

これは、httpとhttpsの両方でリモートアクセスを有効にするために、VisualStudio2015を使用してWindows10で行ったことです。

最初のステップは、アプリケーションを内部IPアドレスにバインドすることです。cmd->を実行ipconfigしてアドレスを取得します。ファイル/{project folder}/.vs/config/applicationhost.configを開き、次のようなものが見つかるまで下にスクロールします。

<site name="Project.Web" id="2">
    <application path="/">
        <virtualDirectory path="/" physicalPath="C:\Project\Project.Web" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:12345:localhost" />
    </bindings>
</site>

の下に2つの新しいバインディングを追加しますbindings。必要に応じて、HTTPSも使用できます。

<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />

cmd次のルールをファイアウォールに追加し、 adminとして新しいプロンプトを開き、次のコマンドを実行します。

netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=12345 profile=private remoteip=localsubnet action=allow

netsh advfirewall firewall add rule name="IISExpressWebHttps" dir=in protocol=tcp localport=44300 profile=private remoteip=localsubnet action=allow

次に、VisualStudioをとして起動しAdministratorます。Webプロジェクトプロジェクトファイルを右クリックして、を選択しますPropertiesWebタブに移動し、をクリックしますCreate Virtual Directory。Visual Studioが管理者として実行されていない場合、これはおそらく失敗します。これですべてが機能するはずです。

ここに画像の説明を入力してください

于 2016-12-07T11:56:40.860 に答える
10

パニック大佐の答えを試したが、Visual Studioで機能しない場合は、次のことを試してください。

IISExpress構成に別のものを追加<binding />します

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

最後に、管理者としてVisualStudioを実行する必要があります

于 2015-07-01T06:52:42.283 に答える
10

このスレッドで回答を組み合わせて、これが私がそれを修正した方法です(Visual Studio 2019):

  1. 管理者としてVisualStudioを起動し、通常どおりにWebサービスを実行します。

  2. タスクバーでIISExpressアイコンを見つけて右クリックし、[すべてのアプリケーションを表示]をクリックします。

  3. Webサービスを選択し、以下に表示される構成パスをメモします。設定ファイルをクリックして、編集用に開きます。

  4. この構成ファイルでWebサービス(ポートの検索例)を見つけてから、次のような行を見つけます *:: yourport:localhost

  5. その後、次のように新しい行を追加します。

    :yourport*

この場合、将来変更される可能性のある特定のIPアドレスでバインディングを作成する必要はありません。

これが誰かの助けになることを願っています。

于 2020-09-14T13:52:53.173 に答える
8

私が見つけた最も簡単でクールな方法は、使用することでした(セットアップには2分かかります):

https://ngrok.com/

ローカルホストで実行されているものなら何でも動作します。サインアップして、少し言い訳を実行するだけで、ローカルホストで実行するものはすべて、どこからでもアクセスできるパブリックURLを取得します。

これは、IISのセットアップやファイアウォールをいじることなく、リモートのチームメイトにコンテンツを表示するのに適しています。アクセスを停止したいだけで実行可能ファイルを終了します。

ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

ngrok http -host-header=localhost 89230

89230がIISExpressポートであると想定

無料プランでも複数のポートを実行できます

于 2018-11-01T14:17:29.920 に答える
5

この質問に対する受け入れられた答えは、IISExpressをwebmatrixで動作させるためのガイドです。このガイドをVS2010で動作させる場合は、このガイドの方が便利です

手順3と4(管理者としてIIS Expressを実行)を実行したところ、ファイアウォールを一時的に無効にして機能させる必要がありました。

于 2011-05-16T00:19:20.820 に答える
5

IIS Expressの構成を変更したり、新しいHTTP.sysルールを追加したり、管理者としてVisual Studioを実行したりする代わりに、ポート転送を設定してみてください。

IP:PORT基本的に、Webサイトの実行をマシン上の他の空きポートに転送する必要がありますが、ローカルホストではなく外部ネットワークアダプターに転送する必要があります。

重要なのは、IIS Express(少なくともWindows 10では)[::1]:portがIPv6ポートでリッスンすることを意味するようにバインドすることです。これを考慮に入れる必要があります。

これが私がこの作業を行った方法です-http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html

それが役に立てば幸い。

于 2017-03-07T09:42:13.637 に答える
3

Win8.1でのIISExpressと外部要求の使用に問題があります。

次の手順に従って、外部リクエストをデバッグします。

  1. IISをインストールします
  2. ローカルIISを使用するようにVisualStudioを構成する(Webプロジェクトのページプロパティ)
  3. IISで排他的なAppPoolを作成して、アプリケーションを操作します
  4. 私のプロジェクトでは、Oracleクライアントを使用しており、32ビットである必要があります(64ビットはVisual Studioでは機能しません)。その後、アプリケーションプールで32ビットを許可する必要があります。
  5. ポート80での要求を許可するようにWindowsファイアウォールを構成する(インバウンドルール)

動作しています!

于 2014-08-03T19:51:16.593 に答える
3

外部要求にアクセスする別の方法は、IISExpressの代わりにIISを使用することです。私のビジュアルスタジオでは、簡単に切り替えることができます。

ここに画像の説明を入力してください

于 2020-03-03T09:57:09.560 に答える
2

ローカルIISを有効にしていたので、デバッグポートへの書き換えルールを作成しました...開発が完了したら削除する方が簡単なので、これは他の方法よりも優れていてクールだと思います...書き換えは次のようになります。 。

<rewrite>
    <rules>
        <rule name="ReverseProxyInboundRule1" stopProcessing="true">
            <match url="^dev/(.*)" />
            <action type="Rewrite" url="http://localhost:47039/{R:1}" />
        </rule>
    </rules>
</rewrite>

VSでは、ローカルIISを直接使用して開発することもできます(リモート接続が可能になります)が、管理者として常に実行する必要があります...私はそれが好きではありません。

于 2016-09-20T16:11:52.640 に答える
2

管理者からVisualStudioを実行している場合は、

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

また

<binding protocol="https" bindingInformation="*:8443:*" />

の中へ

%userprofile%\My Documents\IISExpress\config\applicationhost.config
于 2016-12-26T23:34:14.867 に答える
1

リバースプロキシアプローチを使用してこの問題を解決しました。

Wampサーバーをインストールし、ApacheWebサーバーの単純なリバースプロキシ機能を使用しました。

Apache Webサーバー(8081)をリッスンするための新しいポートを追加しました。次に、そのポートの仮想ホストとしてプロキシ構成を追加しました。

<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
于 2016-11-09T08:24:06.757 に答える
1

私はこれらすべてのステップを実行しましたが、何も役に立ちませんでした。そして、私が必要としているのは、IISExpressを介してアプリを実行することだけです...

ここに画像の説明を入力してください

それが役に立てば幸い。

于 2019-02-18T10:58:43.020 に答える
1

これを使用している私にとっては、比較的単純で簡単です。

[拡張機能]ダイアログで[コンベヤー]を検索して、VisualStudioExtensionをダウンロードします。次に、インストールするだけです。

フォーム: https ://marketplace.visualstudio.com/items?itemName = vs-publisher-1448185.ConveyorbyKeyoti

于 2020-08-20T09:05:04.077 に答える
0

ローカルネットワーク内の他のユーザーにiis要求を提供できませんでした。(上記に加えて)必要なのは、BTハブルーターを再起動することだけでした。

于 2015-04-01T10:01:09.853 に答える
0

これはめちゃくちゃ素晴らしいですし、かなりのドメイン名でHTTPSをカバーしています:

http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx

上記のリンクがなくなった場合に備えて、SOの他の場所では見つけることができなかった本当に素晴らしい部分:

> C:\Program Files (x86)\IIS Express>IisExpressAdminCmd.exe Usage:
> iisexpressadmincmd.exe <command> <parameters> Supported commands:
>       setupFriendlyHostnameUrl -url:<url>
>       deleteFriendlyHostnameUrl -url:<url>
>       setupUrl -url:<url>
>       deleteUrl -url:<url>
>       setupSslUrl -url:<url> -CertHash:<value>
>       setupSslUrl -url:<url> -UseSelfSigned
>       deleteSslUrl -url:<url>
> 
> Examples: 1) Configure "http.sys" and "hosts" file for friendly
> hostname "contoso": iisexpressadmincmd setupFriendlyHostnameUrl
> -url:http://contoso:80/ 2) Remove "http.sys" configuration and "hosts" file entry for the friendly  hostname "contoso": iisexpressadmincmd
> deleteFriendlyHostnameUrl -url:http://contoso:80/

上記のユーティリティはSSL証明書を登録します!-UseSelfSignedオプションを使用すると、非常に簡単です。

難しい方法で物事をやりたい場合、自明ではない部分は、次のように、使用する証明書をHTTP.SYSに指示する必要があることです。

netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE

Certhashは、MMCの証明書プロパティから取得できる「指紋」です。

于 2015-11-03T05:18:34.250 に答える
0

私は次のことを行い、接続することができました:

1)IISExpressの構成バインディングをローカルホストから「*」に変更しました

バインディングprotocol="http" bindingInformation = "*:8888:*"

2)プロトコルタイプの特定のポートを許可するようにファイアウォールでインバウンドルールを定義しました:tcp

3)次のコマンドを追加して、ポートのネットワーク構成を追加します。netsh http add urlacl url = http:// *:8888 / user = everyone

于 2016-10-21T20:02:08.047 に答える
-1

[プロジェクトプロパティダイアログ]

VisualStudio2017とNetCoreAPIプロジェクトを使用した開発の場合:

1)Cmd-Boxの場合:ipconfig / allを使用して、IPアドレスを決定します

2a)取得したIPアドレスを[プロジェクトのプロパティ]->[デバッグ]タブに入力します

2b)ポートを選択し、手順2aのIPアドレスに接続します。

3)ファイアウォールに許可ルールを追加して、選択したポートで着信TCPトラフィックを許可します(私のファイアウォールは、[ファイアウォールにルールをブロックまたは追加する]ダイアログでトリガーされます)。その場合、追加はトリックを行います。

上記のソリューションのデメリット:

1)動的IPアドレスを使用する場合、別のIPアドレスが割り当てられている場合に備えて、上記の手順をやり直す必要があります。

2)サーバーには、忘れてしまう可能性のある開いているポートがありますが、この開いているポートは、不要なゲストへの招待状のままです。

于 2018-06-20T12:49:56.970 に答える