このによると、503エラーは「503 Service Unavailable The server is currently available (because it is overloaded or down for maintenance.) 通常、これは一時的な状態です。」
しかし、それは私には当てはまらないようです。REST メソッドを公開する Web API サーバー アプリを実行しています。Fiddler Composer から正常に呼び出すことができます (ファイルを受信してディスクに保存します) が、「localhost」を使用する場合のみです (IP アドレスもホスト名も機能しません)。
Windows CE / Compact Framework ハンドヘルド デバイス (「localhost」は自己陶酔的で無謀なので使用できません) からメソッドを呼び出そうとすると、エラー 400 - サーバーからの不正な要求、または 503 エラーのいずれかが表示されます。 Web API アプリが実行されている PC の IP アドレスまたはホスト名のどちらを使用するかについて。
次のような私のapplicationhost.configファイルで:
<site name="HHS.Web" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\project\git\CStore\HHS.Web" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:21608:localhost" />
<binding protocol="http" bindingInformation="*:21608:192.168.125.50" />
</bindings>
</site>
...次の URL を使用してハンドヘルド クライアントから HHS.WEB で REST メソッドを呼び出そうとすると、err 400 - Bad Request が発生します。http://192.168.125.50:21608/api/inventory/sendXML/duckbilled/platypus/bla
次のような applicationhost.config ファイルを使用します。
<site name="HHS.Web" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\project\git\CStore\HHS.Web" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:21608:localhost" />
<binding protocol="http" bindingInformation="*:21608:shannon2" />
</bindings>
</site>
...そして、私のホスト名を使用したこの uri:http://shannon2:21608/api/inventory/sendXML/duckbilled/platypus/bla
...「503」エラーが発生します。applicationhost.config のエントリと呼び出す URL を変更するとわかるように、サーバーは実行されています。では、なぜ利用できないと言っているのですか?
アップデート
ブレインストーミングを行い、「PPP_PEER」を使用して PC を指定すればうまくいくと思っていたので、ハンドヘルド デバイスのアプリが呼び出す URL を次のように変更しました。
http://192.168.125.50:21608/api/inventory/sendXML/duckbilled/platypus/bla
...これに:
http://PPP_PEER:21608/api/inventory/sendXML/duckbilled/platypus/bla
...これは、ハンドヘルドが PC を参照する方法のようですが、「400 - Bad Request」エラー メッセージに戻るだけです (サーバー アプリのブレークポイントはまだヒットしていません)。「PPP_PEER」を使用することが正しい考えである場合、それを機能させるには他に何が必要ですか?
更新 2
ビスケットの核心は、コマンド プロンプトで次のいずれかを追加することでした。
netsh http add urlacl url=http://shannon2:80/ user=everyone
...またはこれ:
netsh http add urlacl url=http://shannon2:8080/ user=everyone
詳細については、アップデート 5 を参照してください。