.NET Framework 1.1 Service Pack 1 をベースに構築されたアプリケーションで HTTP 要求を実行しようとすると 1 つ以上のエラー メッセージが表示される

文書翻訳 文書翻訳
文書番号: 915599 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

この資料では、Microsoft .NET Framework 1.1 Service Pack 1 (SP1) を使用して HTTP 要求を実行したとき、または Web サービスを呼び出したときに表示されるエラー メッセージについて説明します。

現象

.NET Framework をベースに構築されたアプリケーションで HTTP 要求を実行しようとすると、次のいずれかまたは複数のエラー メッセージが表示されることがあります。
エラー メッセージ 1
基になる接続が閉じられました : リモート サーバーに接続できません。
エラー メッセージ 2
基になる接続が閉じられました : 送信時に予期しないエラーが発生しました。
エラー メッセージ 3
基になる接続が閉じられました : 受信時に予期しないエラーが発生しました。
エラー メッセージ 4
基になる接続が閉じられました : サーバーにより HTTP プロトコル違反が発生しました。
エラー メッセージ 5
基になる接続が閉じられました : SSL/TLS の安全なチャンネルを確立できませんでした。
エラー メッセージ 6
操作がタイムアウトしました。

原因

エラー メッセージ 1

この問題は、.NET Framework がリモート サーバーへの接続を確立できない場合に発生します。この問題は、次のいずれかまたは複数の条件に該当する場合に発生することがあります。
  • ネットワーク障害が発生している。
  • プロキシ サーバーにより HTTP 要求がブロックされている。
  • DNS (Domain Name System) に関する問題が発生している。
  • ネットワーク認証に関する問題が発生している。
この問題を解決するには、解決方法 A、B、および C を参照してください。

エラー メッセージ 2

この問題は、クライアント コンピュータが HTTP 要求を送信できない場合に発生します。接続が閉じられたか、または利用できないため、クライアント コンピュータは HTTP 要求を送信できません。この問題は、クライアント コンピュータが大量のデータを送信している場合に発生することがあります。この問題を解決するには、解決方法 A、D、E、F、および O を参照してください。

エラー メッセージ 3

この問題は、サーバーまたは他のネットワーク デバイスにより、既存の TCP (Transmission Control Protocol) 接続が突然閉じられた場合に発生します。この問題は、サーバーまたはネットワーク デバイスに設定されているタイムアウト値が小さすぎる場合に発生することがあります。この問題を解決するには、解決方法 A、D、E、F、および O を参照してください。

エラー メッセージ 4

この問題は、サーバーの応答が HTTP 1.1 RFC に準拠していないことが .NET Framework により検出された場合に発生します。この問題は、不適切なヘッダーまたはヘッダーの区切り記号が応答に含まれている場合に発生することがあります。この問題を解決するには、解決方法 A および G を参照してください。

HTTP ヘッダーの詳細については、次の World Wide Web Consortium Web サイトを参照してください。
http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6
他社テクニカル サポートのお問い合わせ窓口は、ユーザーの便宜のために提供されているものであり、将来予告なしに変更されることがあります。マイクロソフトは、掲載している情報に対して、いかなる責任も負わないものとします。

エラー メッセージ 5

この問題は、次のいずれかまたは複数の条件に該当する場合に発生することがあります。
  • 無効なクライアント証明書またはサーバー証明書を使用している。
  • TCP 接続に関する問題が発生している。
  • クライアント コンピュータが大量のデータを送信している。
  • サーバーまたは他のネットワーク デバイスに設定されているタイムアウト値が小さすぎる。
  • HTTPS プロトコルの互換性に関する問題が発生している。
TCP 接続の問題については、解決方法 A、D、E、F、および O を参照してください。クライアント証明書とサーバー証明書の問題については、解決方法 H および I を参照してください。HTTPS プロトコルの互換性の問題については、解決方法 J を参照してください。

エラー メッセージ 6

この問題は、次のいずれかの状態が発生する前にクライアントのタイムアウト値に達した場合に発生します。
  • HTTP 接続が確立される。
  • サーバーからの HTTP 応答を受信する。
  • データ ストリームの書き込みまたは読み取りが完了する。
この問題を解決するには、解決方法 A、E、K、L、M、および N を参照してください。

解決方法

: 上記のいずれかの問題が発生した場合に適用できる可能性のある解決方法の一覧を次に示します。すべての解決方法がすべての問題に適用されるわけではありません。適用される解決方法を確認するには、「原因」に記載されている問題の説明を参照してください。

解決方法 A

この問題を解決するには、最新版の .NET Framework を使用していることを確認します。 関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
318785 .NET Framework のバージョン、および Service Pack が適用されているかどうかを確認する方法

解決方法 B

この問題を解決するには、次の方法を使用して、プロキシ設定が正しいことを確認します。
  • 静的メソッド WebProxy.GetDefaultProxy を使用します。詳細については、次のマイクロソフト Web サイトを参照してください。
    http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemnetwebproxyclassgetdefaultproxytopic.asp
  • アプリケーション構成ファイルで <proxy> 要素を定義します。詳細については、次のマイクロソフト Web サイトを参照してください。
    http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpgenref/html/gngrfproxyelement.asp
  • HttpWebRequest.ProtocolVersion プロパティを変更して、HTTP 1.0 を使用するように .NET クライアントを構成します。詳細については、次のマイクロソフト Web サイトを参照してください。
    http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemnethttpwebrequestclassprotocolversiontopic.asp
    : .NET Framework は、デフォルトでは HTTP 1.1 を使用します。
  • SSL (Secure Sockets Layer) を使用している場合、プロキシが HTTPS をブロックするルールを使用するように構成されていないことを確認します。
  • 自動プロキシを使用している場合、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    873199 マネージ コードで自動プロキシを使用する方法

解決方法 C

この問題を解決するには、ネットワーク呼び出しおよびソケット呼び出しを行うためのアクセス許可が、アプリケーションに与えられていることを確認します。この解決方法は、HttpWebRequest の呼び出しを行うアプリケーションが Web アプリケーション内で実行される場合に適用します。次のリソースにアクセスできるようにするために、ASPNET アカウントに読み取りアクセス許可を与えることが必要になる場合があります。
  • Microsoft WinSockProxy WS2.0 プロバイダ (Wspwsp.dll) ファイル
  • HKLM\System\CurrentControlSet\Services\DnsCache
    レジストリ キー
  • HKLM\System\CurrentControlSet\Services\WinSock2
    レジストリ キー
: 必要なアクセス許可が ASPNET ワーカー プロセスに与えられているかどうかを確認するには、FileMon ユーティリティおよび RegMon ユーティリティを使用します。FileMon ユーティリティおよび RegMon ユーティリティをダウンロードするには、次の Sysinternals Web サイトを参照してください。
http://www.microsoft.com/technet/sysinternals/default.mspx/
この資料に記載されているサードパーティ製品は、マイクロソフトと関連のない他社の製品です。明示または黙示にかかわらず、これらの製品のパフォーマンスや信頼性についてマイクロソフトはいかなる責任も負わないものとします。

解決方法 D

この問題を解決するには、キープアライブ機能を無効にします。.NET Framework では、HttpWebRequest.KeepAlive プロパティを FALSE に設定します。これを行うには、Web サービスの呼び出し時に、次の手順を実行します。

: NTLM 認証にはキープアライブ機能が必要です。
  1. 生成されたプロキシ クラスから継承して新しいクラスを作成します。
  2. メソッドをクラスに追加して、GetWebRequest メソッドを上書きします。この変更により、HttpWebRequest オブジェクトにアクセスできるようになります。Microsoft Visual C# を使用している場合は、次のようなメソッドを追加します。
    class MyTestService:TestService.TestService
    {
        protected override WebRequest GetWebRequest(Uri uri)
        {
            HttpWebRequest webRequest = (HttpWebRequest) base.GetWebRequest(uri);
            //Setting KeepAlive to false
            webRequest.KeepAlive = false;
            return webRequest;
        }
    }
    Microsoft Visual Basic .NET を使用している場合は、次のようなメソッドを追加します。
    Class MyTestService 
         Inherits TestService.TestService
            Protected Overrides Function GetWebRequest(ByVal uri As Uri) As System.Net.WebRequest
                Dim webRequest As System.Net.HttpWebRequest
                webRequest = CType(MyBase.GetWebRequest(uri), System.Net.HttpWebRequest)
               'Setting KeepAlive to false 
                webRequest.KeepAlive = False
                GetWebRequest = webRequest
            End Function
    End Class
  3. 新しいクラスのインスタンスを作成し、そのクラスを使用して Web サービスのメソッドを呼び出します。

解決方法 E

この問題を解決するには、ServicePointManager.MaxServicePointIdleTime プロパティをサーバーのキープアライブ接続のタイムアウト値よりも小さい値に設定します。

  • ServicePoint オブジェクトのアイドル時間が MaxIdleTime プロパティに指定されている時間に達すると、このオブジェクトはガベージ コレクションの対象になります。
  • HTTP 要求が実行される前に ServicePointManager.MaxServicePointIdleTime プロパティを設定してください。ServicePointManager.MaxSercvePointIdleTime プロパティの詳細については、次のマイクロソフト Web サイトを参照してください。
    http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemnetservicepointmanagerclassmaxservicepointidletimetopic.asp

解決方法 F

この問題を解決するには、サーバー コンピュータおよび他のネットワーク デバイスのタイムアウト値を大きくします。Microsoft インターネット インフォメーション サービス (IIS) 6.0 でタイムアウト値を大きくするには、次の手順を実行します。
  1. [スタート] ボタンをクリックし、[コントロール パネル] をポイントします。次に、[管理ツール] をポイントし、[インターネット インフォメーション サービス (IIS) マネージャ] をクリックします。
  2. 再構成するコンピュータの名前をクリックし、[Web サイト] をダブルクリックします。
  3. 再構成する Web サイトを右クリックし、[プロパティ] をクリックします。
  4. [接続のタイムアウト] ボックスに新しい値を入力し、[OK] をクリックします。
  5. [ファイル] メニューの [終了] をクリックします。

解決方法 G

この問題を回避するには、useUnsafeHeaderParsing を True に設定します。 useUnsafeHeaderParsing プロパティの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
888528 「サポート技術情報」 (Microsoft Knowledge Base) の個別の資料に記載されていない .NET Framework 1.1 Service Pack 1 で修正された問題の一覧

解決方法 H

この問題を解決するには、アプリケーションに対して有効なクライアント証明書を提供します。 クライアント証明書を使用する方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
901183 ASP.NET Web アプリケーションで認証用のクライアント証明書を使用して Web サービスを呼び出す方法
895971 Microsoft Visual C# .NET で HttpWebRequest および HttpWebResponse の各クラスを使用してクライアント証明書を送付する方法

解決方法 I

この問題を解決するには、サーバーに有効なセキュリティ証明書を提供します。また、ルート証明機関 (CA) の証明書をインストールするか、サーバー証明書の一般名を変更することによって、この問題を解決できる場合があります。 サーバー証明書の名前付けの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
813618 セキュリティ警告メッセージ : セキュリティ証明書は無効か、名前がサイト名と一致しません。
警告 : この資料に記載された回避策を適用することにより、悪意のあるユーザーまたはウイルスなどの悪意のあるソフトウェアによる攻撃をコンピュータまたはネットワークが受けやすくなる場合があります。この資料の情報は、ユーザーが記載されている回避策を自己の判断で使用することを前提に提供されているものであり、この回避策をお勧めするものではありません。この回避策は、自己の責任においてご使用ください。

アプリケーション コードを変更して、証明書に関するこれらの警告を無視するようにすることもできます。これを行うには、独自の ICertificatePolicy インターフェイスを実装します。これにより、ServicePointManager.CertificatePolicy プロパティを設定して、Web サービス メソッドの呼び出しが行われる前に独自の証明書ポリシー インスタンスを使用できます。

: ICertificatePolicy.CheckValidationResult メソッドは、アプリケーションの証明書検証ポリシーを実装します。ICertificatePolicy.CheckValidationResult メソッドの詳細については、次のマイクロソフト Web サイトを参照してください。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfSystemNetICertificatePolicyClassCheckValidationResultTopic.asp
関連情報およびサンプル コードを参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
823177 [PRB] .NET Framework をアップグレードするとエラー メッセージ "System.Net.WebException。基になる接続が閉じられました : リモート サーバーと信頼関係を確立できませんでした" が表示される
重要 : セキュリティ上の危険が生じる可能性があるため、コード内の SSL 証明書に関する警告を無視することはお勧めしません。

解決方法 J

この問題を解決するには、HTTPS プロトコルを SSL から TLS (Transport Level Security) に変更します。

: 既に TLS を使用している場合は、HTTPS プロトコルを SSL に変更してください。クライアント コンピュータで HTTPS プロトコルを変更する方法の詳細については、次のマイクロソフト Web サイトの「ServicePointManager.SecurityProtocol プロパティ」を参照してください。
http://msdn2.microsoft.com/ja-jp/library/system.net.servicepointmanager.securityprotocol(VS.80).aspx
: たとえば、SSL3 プロトコルおよび TLS1 プロトコルをサポートするには、次のようなコードを使用します。
ServicePointManager.SecurityProtocol= SecurityProtocolType.Ssl3|SecurityProtocolType.Tls;
サーバー コンピュータで HTTPS プロトコルを変更する方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
187498 インターネット インフォメーション サービスで PCT 1.0、SSL 2.0、SSL 3.0、または TLS 1.0 を無効にする方法

解決方法 K

この問題を解決するには、maxConnection プロパティの値を大きくします。これを行うには、アプリケーションの構成ファイルを変更するか、アプリケーション コードを追加します。

: maxConnection プロパティのデフォルト値は 2 です。Web サービスを呼び出す Microsoft ASP.NET アプリケーションの場合は、プロセッサ数の 12 倍の値を設定することをお勧めします。アプリケーション コードを使用してこの値を設定するには、ServicePointManager.DefaultConnectionLimit プロパティを使用します。ServicePointManager.DefaultConnectionLimit プロパティの詳細については、次のマイクロソフト Web サイトを参照してください。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfSystemNetServicePointManagerClassDefaultConnectionLimitTopic.asp
アプリケーションの構成ファイルを使用してこの値を設定するには、次のコードを構成ファイルに追加します。
<connectionManagement>
  <add address="*" maxconnection="12"/>
</connectionManagement>
<connectionManagement> 要素の使用方法の詳細については、次のマイクロソフト Web サイトを参照してください。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpgenref/html/gngrfconnectionmanagementelement.asp

解決方法 L

この問題を解決するには、サーバーおよび他のネットワーク デバイスのタイムアウトの設定が正しく実装されていることを確認します。 タイムアウトの設定を実装する方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
904262 ASP.NET アプリケーションで HttpWebRequest クラスを使用すると、HttpWebRequest クラスによって送信される要求が応答を停止することがある

解決方法 M

この問題を解決するには、ASP.NET のパフォーマンス チューニングに関する資料を参照します。 ASP.NET のパフォーマンス チューニングの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
821268 ASP.NET アプリケーションから Web サービス要求を行うと、競合、パフォーマンスの低下、およびデッドロックが発生する

解決方法 N

この問題を解決するには、クライアント アプリケーション コードでタイムアウト プロパティの値を大きくします。これを行うには、次のプロパティを使用します。
  • HttpWebRequest.Timeout
  • HttpWebRequest.ReadWriteTimeout
HttpWebRequest.Timeout プロパティの詳細については、次のマイクロソフト Web サイトを参照してください。
http://msdn2.microsoft.com/ja-jp/library/system.net.httpwebrequest.timeout(VS.80).aspx
HttpWebRequest.ReadWriteTimeout プロパティの詳細については、次のマイクロソフト Web サイトを参照してください。
http://msdn2.microsoft.com/ja-jp/library/system.net.httpwebrequest.readwritetimeout(VS.80).aspx

解決方法 O

この問題を解決するには、クライアント コンピュータが HTTP 100-Continue ヘッダーを送信しないことを確認します。また、クライアント コンピュータが HTTP 100-Continue ヘッダーを受信するまで待機しないことを確認します。

: この解決方法は、Web サーバーまたはプロキシ サーバーで HTTP 100-Continue ヘッダーがサポートされていない場合に有効です。クライアント コンピュータに対する HTTP 100-Continue ヘッダーを無効にする方法の詳細については、次のマイクロソフト Web サイトを参照してください。
http://msdn2.microsoft.com/ja-jp/library/system.net.servicepointmanager.expect100continue(VS.80).aspx

関連情報

ASP.NET アプリケーションから Web サービスを呼び出すときのパフォーマンスに関する注意事項については、次のマイクロソフト Web サイトを参照してください。
http://msdn2.microsoft.com/en-us/library/aa480507.aspx
ASP.NET アプリケーションから Web サービス要求を行ったときに発生するパフォーマンスおよびデッドロックに関する問題を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
821268 ASP.NET アプリケーションから Web サービス要求を行うと、競合、パフォーマンスの低下、およびデッドロックが発生する
ASP.NET アプリケーションのパフォーマンスを向上させる方法の詳細については、次のマイクロソフト Web サイトを参照してください。
http://www.microsoft.com/japan/msdn/enterprise/pag/scalenetchapt06.asp
Web サービスのパフォーマンスを向上させる方法の詳細については、次のマイクロソフト Web サイトを参照してください。
http://www.microsoft.com/japan/msdn/enterprise/pag/scalenetchapt10.aspx
セキュリティで保護された ASP.NET アプリケーションを構築する方法の詳細については、次のマイクロソフト Web サイトを参照してください。
http://msdn2.microsoft.com/en-us/library/aa302408.aspx
: HTTP 要求には TCP トランスポート プロトコルが使用されます。TCP は、信頼性の高い接続指向プロトコルです。ただし、TCP 接続が突然閉じられた場合、アプリケーションにより要求が再試行されます。TCP プロトコルの詳細、およびサーバーが接続を閉じた場合のクライアントの動作の詳細については、次の World Wide Web Consortium Web サイトを参照してください。
http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.4
他社テクニカル サポートのお問い合わせ窓口は、ユーザーの便宜のために提供されているものであり、将来予告なしに変更されることがあります。マイクロソフトは、掲載している情報に対して、いかなる責任も負わないものとします。
FileMon ユーティリティおよび RegMon ユーティリティの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
198038 パッケージおよび展開に関する問題の解決に役立つツール
ネットワーク モニタの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
148942 ネットワーク モニタを使ってネットワーク トラフィックをキャプチャする方法
812953 ネットワーク モニタを使用してネットワーク トラフィックをキャプチャする方法

プロパティ

文書番号: 915599 - 最終更新日: 2007年12月3日 - リビジョン: 1.4
この資料は以下の製品について記述したものです。
  • Microsoft .NET Framework 1.1 Service Pack 1
キーワード:?
kbtshoot kbprb KB915599
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com