【问题标题】:The request failed with HTTP status 417: Expectation Failed - Using Web Services请求失败,HTTP 状态为 417:预期失败 - 使用 Web 服务
【发布时间】:2012-06-27 05:50:12
【问题描述】:

几分钟前,我在 Visual Studio 2010 中处理一个项目,突然我的电脑重新启动。
重新启动后,在本地机器上浏览该网站时出现以下错误:

请求失败,HTTP 状态为 417:预期失败。

描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。

异常详细信息:System.Net.WebException:请求失败 HTTP 状态 417:预期失败。

我的网站名称是:MyWebSite
我在 MyWebSite 正在使用它的远程服务器(vps)上有一个 Web 服务,并且该错误与它有关。

Line 172:        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/MyWebSiteEnable", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
Line 173:        public bool MyWebSiteEnable() {
Line 174:            object[] results = this.Invoke("MyWebSiteEnable", new object[0]);
Line 175:            return ((bool)(results[0]));
Line 176:        }

该网络服务一切正常。
那么这个错误是什么,我该如何解决呢?
该 Web 服务中只有一个简单的 bool 方法返回 true。
我在代码隐藏中使用该网络服务,如下所示:

private void CheckForPageExpiration()
{
    MyService service = new MyService();
    if (service.MyWebSiteEnable())
    {
    }
    else
    {
        Response.Redirect("~/blank.aspx");
    }
}

我删除了该 Web 服务并再次添加它,但仍然出现该错误!
这有什么问题?

提前致谢

【问题讨论】:

  • 我认为这适用于我的 ADSL 互联网。我用另一个 wifi 互联网测试了那个网站,一切都很好。那我应该告诉那个 isp 什么?

标签: c# asp.net web-services exception


【解决方案1】:

This 表明问题是代理服务器不支持来自服务器的 100-continue 响应,并显示解决该问题的代码。这可以解释为什么它可以在另一个网络上运行。

由于您不太可能说服您的 ISP 改变他们的做法(尽管对请求没有害处),您应该按照以下链接的建议关闭发送 100-Continue 的行为:

将此代码放在网络请求之前:

System.Net.ServicePointManager.Expect100Continue = false;

或者,将以下行添加到应用程序配置文件作为<configuration> 标记的子项:

<system.net>
    <settings>
        <servicePointManager expect100Continue="false" />
    </settings>
</system.net>

【讨论】:

  • 感谢您的回答/我读到了/但禁用期望 100 继续正确的解决方案? /我不这么认为,这就是为什么我在这里再次问这个Q!我的网络服务器没有问题,只有本地机器(adsl 互联网)是问题所在。所以应该有另一种方法来解决这个异常。
  • 但至少如果您尝试禁用 100-continue,您可以查看它是否可以解决问题。如果不出意外,它将帮助您了解问题所在,并可能为解决方案提供更多选择。
  • 我测试了它,这就是问题所在。我知道这个问题是针对我的 isp 的。但是我应该告诉他们解决什么问题?
  • 我遇到了同样的问题,但最糟糕的是,当我遇到这个问题时,我编写了一个测试应用程序来测试我的 web 服务调用,但它工作正常。有什么想法吗?
【解决方案2】:

在您的配置文件中添加以下代码行。

<system.net>
    <defaultProxy useDefaultCredentials="true" >
    </defaultProxy>
</system.net>

【讨论】:

    猜你喜欢
    • 2015-06-08
    • 2012-05-03
    • 2011-03-26
    • 1970-01-01
    • 2013-12-08
    • 2011-08-02
    • 2019-06-18
    • 1970-01-01
    • 2013-04-10
    相关资源
    最近更新 更多