据此, 503错误为“503 Service Unavailable 服务器当前不可用(因为超载或停机维护)。一般这是暂时的状态。”
然而,对我来说似乎并非如此。我有一个 Web API 服务器应用程序正在运行,它公开了一个 REST 方法。我可以从 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 - 错误请求”错误消息(并且服务器应用程序中的断点仍未命中)。如果使用“PPP_PEER”是正确的想法,我还需要什么让它工作?
更新 2
饼干的关键是在命令提示符下添加以下内容:
netsh http add urlacl url=http://shannon2:80/ user=everyone
...或这个:
netsh http add urlacl url=http://shannon2:8080/ user=everyone
有关详细信息,请参阅此处的更新 5