2017-07-05 34 views
-2

私はVisual Studio 2017でWCFサービスを作成しました。このサービスをIISに追加しました(エクスプレス版ではなく完全版IIS)。既定の作成されたWebサイトの下にアプリケーションとして追加されます。私はhttp://localhost/<websitename>/MyService.svc/test/123で問題なくサービスエンドポイントにアクセスできます。 /test/123は単なるGETエンドポイントです。IIS Webサイトアプリケーションはポート80以外何も動作しません

デフォルトのウェブサイトはすでに私は、1234年を言うために80からポートを変更したときにしかし、それは動作しませんポート80

用に設定されています。私が/test/123エンドポイントをヒットしたときに返されるのは"Service Unavailable. HTTP Error 503."です。

コンソールコマンドを実行して、ACL netsh http add urlacl url=http://+:1234/ user=everyoneにポートを追加しました。

どのように私は別のポート(非80)を稼働させることができます知っていますか?

編集: 他のポートにバインドする方法を説明する回答How to run WCF service on a specific portがあります。ただし、受け入れられる答えはnet.tcpプロトコルを使用します。私はHTTPプロトコルを使用したいと思います。

HTTPプロトコルを使用する方法はありますか?それができない場合は、私は病気を再設計し、net.tcpプロトコルにスワップしなければならないと思います。

私は.NET開発とWCFには非常に新しいので、うまくいけば経験を持つ誰かが私に正しい方向を向けることができます。

+0

ここでの答えは機能しますか? https://stackoverflow.com/questions/8514766/how-to-run-wcf-service-on-a-specific-port – m4ttsson

+0

可能な解決策はたくさんあります。まず、ローカルのファイアウォールをチェックしましたか?それをオフにしてみてください。 –

+0

[特定のポートでWCFサービスを実行する方法](https://stackoverflow.com/questions/8514766/how-to-run-wcf-service-on-a-specific-port) – bradbury9

答えて

0

結論として、この問題は、いわゆるリンクされた回答とは関係がありませんでした。

IISでWCFサービスを実行する前に、WASとコンソールアプリケーションとして展開しようとしていました。これら2つの実装を動作させる私のプロセスでは、ポートにアクセスできるようにコマンドnetsh http add urlacl url=http://+:1234/ user=everyoneを実行しなければなりませんでした。全くの幸運によって

は、私はこのリンクつまずい: https://serverfault.com/questions/666976/service-unavailable-if-i-try-to-access-iis-website-via-ip-address-works-fine-vi

を、それが受け入れ答えを持っていませんでしたが、コメントは答えを開催しました。 netshコマンドを実行したため、問題が発生しました。何が起こるのは、コマンドがそのip/portを予約させるため、IISはip/portに接続できないため、Service Unavailableエラーです。 WASとコンソールのバージョンでコマンドを実行する必要がある場合は、IISのバージョンでもそれが必要であると仮定しました。

他のどのポートでもIIS WCFサービスを利用できるようにするために、このプロセスは非常に簡単です。 IIS自体の中で(起動するには「実行」の「inetmgr」を実行します)、作成したデフォルトまたはカスタムWebサイトで、バインディングを編集し、HTTPポートを任意のポートに変更します。その後、その完了。そのポートからHTTP経由でアプリケーション/ Webサイトにアクセスできるはずです。 例: http://localhost:<some port>/<websitename>/MyService.svc/test/123

私のWCFサービス設定は、HTTPアクセスを許可する標準設定でした。

別のコンピュータまたはインターネットからアクセスする場合は、(必要に応じて)選択したポートをポート転送するようにルータを設定し、ファイアウォールでそのポートのデータフローを許可する必要があります。

これはいくつか重複していたと仮定してダウンダウン者に多くの "ありがとう"。あなたの "助け"は、問題の解決策を見つけるのに貢献しました。

関連する問題