在“400”错误之后,HHTP“404”和“405”错误是朝着正确方向迈出的一步吗?
更改我的 applicationhost.config 文件后,根据本文中的第 3 步,从此:
<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>
<site name="HHS.API" id="4">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\project\git\CStore\HHS.API" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:21609:localhost" />
<binding protocol="http" bindingInformation="*:21609:shannon2" />
</bindings>
</site>
...对此:
<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:" />
</bindings>
</site>
<site name="HHS.API" id="4">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\project\git\CStore\HHS.API" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:21609:" />
</bindings>
</site>
...并在此 rigamarole 之后重新启动 IIS Express(上面引用的同一篇文章中的第 4 步):
....我在运行 may 应用程序时得到了一个不同但更常见的问题,而不是我之前的错误(“400 - 错误请求”):“404 - 未找到”
但是,如果我在手持设备上的 IE 中输入 URL 并运行它,我会得到“405 - 资源不允许”
有谁知道如何解决这个困境/任何人都可以看到我在这里所做的事情有问题吗?
更新
至于从 PC (Chrome) 浏览器测试各种 URL,以下是我尝试的方法及其结果:
// hostname / machine name:
"http://shannon2:21608/api/inventory/sendxml/bla/bla/bla" gives me:
http错误503服务不可用。
// IP Address:
"http://192.168.125.50:21608/api/inventory/sendxml/bla/bla/bla" gives me:
<Error>
<Message>
The requested resource does not support http method 'GET'.
</Message>
</Error>
// locohost:
"http://localhost:21608/api/inventory/sendxml/bla/bla/bla" gives me the same response as using the IP Address (192.168.125.50) above.
// locohost as IP Address
"http://127.0.0.1:21608/api/inventory/sendxml/bla/bla/bla" also gives me the same response as using the IP Address (192.168.125.50) or localhost as shown above.
更新 2
尝试从手持设备通过 (IE) 浏览器访问资源:
在 URL 中使用127.0.0.1会导致浏览器响应“找不到服务器或 DNS 错误”
使用192.168.125.50(我的 PC 的 IP 地址)响应“ HTTP 405 - 找不到资源”
更新 3
在答案(此处)中引用的 Gretelman 帖子中,它说要这样做:
netsh http add urlacl url=http://hanselman-w500:80/ user=everyone
...从命令提示符;就我而言,这将是:
netsh http add urlacl url=http://shannon2:80/ user=everyone
但这不是只开放访问端口 80 的尝试吗?我需要访问 REST Web API 方法期望的端口,即 21608...
我应该这样做:
netsh http add urlacl url=http://shannon2:21608/ user=everyone
?
更新 4
我可以在命令提示符处执行以下操作而没有错误:
iisexpress.exe site:"HHS.Web"
它显示为在 IIS Express 中运行——实际上,HSS.Web 在运行该命令之前已启动(我可以通过右键单击 IIS Express 任务栏图标并选择“显示所有应用程序”来查看)以及 HHS.API ,但我运行它以查看它是否会返回任何错误消息,根据这里的建议
更新 5
特别是作为更新 3 的后续行动,它是这样的:
netsh http add urlacl url=http://shannon2:80/ user=everyone
...或这个:
netsh http add urlacl url=http://shannon2:8080/ user=everyone
...成功了——我现在终于能够在运行这些命令后从手持设备上命中服务器上的断点(使用我的机器的主机名向大众开放端口 80 和 8080)。哪个是必要的,或者他们是否都是,我不知道。我已经添加了“21608”和“21609”的命令,所以它们不是解决方案: