3

在“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”的命令,所以它们不是解决方案:

在此处输入图像描述

4

1 回答 1

1

在考虑通过网络/域公开与 IIS Express 应用程序实例的连接时,您必须修改 HTTP.SYS 和防火墙入站规则。

另外,我建议您在绑定中使用您的计算机名称。

这是涵盖此配置以及其他注意事项的参考文章:http ://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx

本文介绍了使用两种方法/过程(标记为 Easy & Ninja/Hard)在标准端口 80 上提供对 IIS Express 实例的外部流量访问。它还涵盖了信任自签名证书和 ASP.NET URL 重写规则的过程,以访问和处理通过 https (SSL) 到您的应用程序实例的连接。

它非常冗长,如果它为您提供所需的信息,我可能会用该信息更新此答案。(我想它会的)..

编辑:

涵盖您的问题(此时您已解决)的最合适的文章似乎是 [ http://www.iis.net/learn/extensions/using-iis-express/handling-url-binding-failures-in- iis-express ],如 SO Post [配置 IIS Express 以从外部访问 VS2010 项目] 中引用的。

于 2014-09-16T21:58:25.207 回答