2016-03-25 10 views
1

マーキングする前にそれを読んでください。セルフホスト(コンソールを使用)を使用することはできませんasp .net 5 web api over LAN

私はlocalhost:5000ポートを介してデフォルトのテンプレートweb apiをホストするVisual Studio 2015のシンプルなWebホスティングオプションを使用しています。

私はIISエクスプレスを使用していないことに注意してください、IISホスティングのための多くの質問があります。

私は単にhttp://localhost:5000/api/valuesを使用してそれらを消費することができます。しかし、localhostではなく適切なIPを使って、LAN上の別のシステムからこのapiを消費しようとすると、接続できず、URLへの接続エラーが表示されます。

あなたは簡単にこれを再現しようとすることができます:解決策を実行しながら、 "IIS Expressの" の "ウェブ" オプションinspiteを選択してVisual Studioの2015年

  • を使用して作成ASP .NET 5のWeb APIを

    1. 。これは、ポート上でコンソールを使用してASP .NETウェブAPIは、5000
    2. は今は打つことで、Web APIを消費することができます。しかしhttp://localhost:5000/api/values
    3. を私が(IPを適切するローカルホストを変更するLANを介して別のシステムから同じことをしようとした場合)、私は接続できません。
    4. また、LAN経由で別のシステムから自分のシステムにpingしようとすると、適切な応答が得られます。

    ご協力いただければ幸いです。

  • +0

    すべてのアクセスを拒否しているようですが、 'localhost'からです。アプリを適切に公開して起動するとどうなりますか?私はそれが採用されたときにこのように振る舞いません。あなたが望むように振る舞うようにするには、いくつかの設定スイッチが必要です。(つまり、localhost以外の誰もがアクセスを拒否しないようにしてください) –

    +0

    IISを使ってホストし、LAN経由でリモートコンピュータからアクセスしようとすると、それを働かせてください。この場合、「HTTP Error 400。要求ホスト名が無効です」というメッセージが表示されます。 – Randeep

    +0

    そのHTTPリクエストの 'Host:...'フィールドの内容が間違っている可能性があります。 'localhost'または' 'に設定してみてください。つまり、あなたのウェブアプリケーションを採用/公開すると、それらのアクセスできない問題はとにかく進むはずです。 –

    答えて

    2

    編集project.jsonファイルを、「コマンド」セクションを見つけ、次のように「ウェブ」キーの値を編集します。これは、ケストレルはすべてのすべてのアドレスをリッスンするようになります

    "web": "Microsoft.AspNet.Server.Kestrel --server.urls=http://*:5000" 
    

    インターフェイス。ファイアウォールの設定も確認する必要があります。 5000ブロックされていますか?

    +0

    うわー。それはうまくいった。しかし、それは完璧な解決策ですか? – Randeep

    +0

    それは解決策であるように見えます。私はそれに答えてマーキングしています。これについて学ぶための参考文献を教えてください。 – Randeep

    +0

    @DotnetRocks - 良い概観はここで見つけることができます:https://docs.asp.net/en/latest/fundamentals/servers.html?highlight=kestrel –

    関連する問題