数分前にビジュアルスタジオ2010でプロジェクトに取り組んでいたところ、突然PCが再起動しました。
再起動後、ローカルマシンでそのWebサイトを参照すると、以下のエラーが発生しました。
リクエストはHTTPステータス417で失敗しました:予期された失敗。
説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーの詳細と、エラーがコードのどこで発生したかについては、スタックトレースを確認してください。
例外の詳細:System.Net.WebException:要求はHTTPステータス417で失敗しました:予期された失敗。
私のWebサイトの名前は: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サービスについてはすべて問題ありません。
それで、このエラーとは何ですか、どうすれば修正できますか?
Webサービスの内部には、trueを返す単純なブールメソッドがあります。
そして私は以下のようなコードビハインドでそのWebサービスを使用しています:
private void CheckForPageExpiration()
{
MyService service = new MyService();
if (service.MyWebSiteEnable())
{
}
else
{
Response.Redirect("~/blank.aspx");
}
}
そのWebサービスを削除して再度追加しましたが、まだエラーが発生します!
何が問題になっていますか?
前もって感謝します
This は、問題がサーバーからの100-continue応答をサポートしないプロキシサーバーであることを示唆し、それを解決するためのコードを示します。これは、それが別のネットワークで動作する理由を説明します。
ISPの慣行を変更するように説得することはほとんどありません(ただし、リクエストに害はありません)。リンクが示唆するように、100-Continueを送信する動作をオフにする必要があります。
このコードをWebリクエストの前に置く:
System.Net.ServicePointManager.Expect100Continue = false;
または、次の行を<configuration>
タグの子としてアプリケーション構成ファイルに追加します。
<system.net>
<settings>
<servicePointManager expect100Continue="false" />
</settings>
</system.net>
以下のコード行を構成ファイルに追加します。
<system.net>
<defaultProxy useDefaultCredentials="true" >
</defaultProxy>
</system.net>