如何解决HTTP“404”和“405”错误消息?

时间:2014-09-16 21:33:28

标签: internet-explorer http-status-code-404 iis-express http-status-code-405 applicationhost

HHTP" 404"和" 405"在" 400"之后错误地朝着正确的方向迈出了一步错误?

根据this article中的步骤3更改我的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>
<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步):

enter image description here

....我在运行may app时得到的,而不是我以前的错误(&#34; 400 - Bad Request&#34;)一个不同但更常见的问题:&#34; 404 - Not Found&#34;

但是,如果我在手持设备上输入网址并运行它,我会得到,&#34; 405 - 资源不允许&#34;

有谁知道如何解决这个困境/任何人都可以看到我在这里做的事情有问题吗?

更新

关于从PC(Chrome)浏览器测试各种网址,以下是我尝试过的内容及其结果:

// 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)浏览器从手持设备访问资源:

在网址中使用 127.0.0.1 会导致浏览器回复&#34; 无法找到服务器或DNS错误&#34;

使用 192.168.125.50 (我的电脑的IP地址)用&#34; HTTP 405响应 - 资源未找到&#34;

更新3

在答案(here)中引用的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任务栏图标并选择&#34;显示所有应用程序和#34所看到的那样) ;),以及HHS.API,但我根据建议的here

运行它以查看它是否会返回任何错误的消息

更新5

作为特别更新3的后续行动,它是:

netsh http add urlacl url=http://shannon2:80/ user=everyone

......或者这个:

netsh http add urlacl url=http://shannon2:8080/ user=everyone

......这就是诀窍 - 我现在终于可以在运行这些命令后使用掌上电脑打开服务器上的断点(使用我的机器的hostName打开端口80和8080)。这是必要的,或者两者都是,我都不知道。我已经为&#34; 21608&#34;添加了命令。和&#34; 21609&#34;所以他们不是解决方案:

enter image description here

1 个答案:

答案 0 :(得分:1)

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

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

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

本文介绍了使用两种方法/流程(标记为Easy&amp; 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帖子[Configure IIS Express for external access to VS2010 project]引用。