問題タブ [communicationexception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - CommunicationException。WCF
WCFに問題があります。私がこの
サイトから例を書いた最初のアプリケーション。それはうまくいきました。
データベースのサーバーリストからオブジェクトを転送するアプリケーションを作成する必要があります。しかし、クライアントのリストを取得すると、次のようになります。CommunicationException
(localhost:8080)へのHTTP応答の受信中にエラーが発生しました。これは、HTTPプロトコルを使用していないサービスエンドポイントバインディングが原因である可能性があります。これは、サーバーによってHTTP要求コンテキストが中止されたことが原因である可能性もあります(おそらくサービスのシャットダウンが原因です)。詳細については、サーバーログを参照してください。
サーバーが正常に動作したか、何かがわかりません。
プロジェクトに関する情報(コード)が必要な場合は、お知らせします
英語でごめんなさい。
UPD:構成:
サーバーコード:
UPD2:
失敗:
MobilePostClient
によって作成されましたAdd Service Reference
。
UPD3:IMobilePosts:
MobilePosts:
リポジトリは正しく機能しました。
wcf - WCF サービス - CommunicationException を受け取るクライアント
現在、WCF サービスに接続しています。現在、断続的な CommunicationExceptions が発生しています。
-> 例外 (CommunicationException) System.ServiceModel.CommunicationException: サーバーが無効な SOAP エラーを返しました。詳細については、InnerException を参照してください。---> System.Xml.XmlException: XML データの読み取り中に、文字列コンテンツの最大長クォータ (8192) を超えました。このクォータは、XML リーダーの作成時に使用される XmlDictionaryReaderQuotas オブジェクトの MaxStringContentLength プロパティを変更することで増やすことができます。
構成ファイルを更新して、MaxStringContentLength を 2147483647 に設定しました
これらのエラーはまだ断続的に発生しています。
それらを引き起こしている可能性のあるものについて何か提案はありますか?
前もってありがとう、フィオナ
更新 以下は、構成ファイルからのバインディングです。
c# - しばらく実行した後の ServiceKnownType に関連する WCF CommunicationException (または IIS アプリケーション プールのリサイクル?)
IIS でホストされている WCF サービスがあります。このサービスは、interface-types を引数または戻り値の型として使用する汎用インターフェイスによって定義されるため、ServiceKnownType 属性を使用して、実行時に上記インターフェイスの使用可能な実装を定義します。
これはすべて正常に機能しているように見えますが、これらのサービスへのすべてのリクエストが CommunicationException で失敗する場合があります。「パラメーターhttp://tempuri.org/ : argをシリアル化しようとしているときにエラーが発生しました。InnerException メッセージは、データ コントラクト名が 'SomeInterfaceImplementation:http://schemas.datacontract.org/2004 の'Type ' MyNamespace.SomeInterfaceImplementation ' でした。 /07/MyNamespace' は予期されていません。たとえば、KnownTypeAttribute 属性を使用するか、DataContractSerializer に渡される既知の型のリストにそれらを追加することにより、静的に認識されていない型を既知の型のリストに追加します。'.InnerException を参照してください詳しくは。」
このエラーを確実に再現することはできませんが、サービスをしばらく実行したままにしておくと (週末など)、定期的に表示されます。私は当初、IIS アプリケーション プールのリサイクルが原因でこれが発生していると推測しましたが、手動のリサイクル、または短い間隔 (2 分など) でスケジュールされたリサイクルでは、問題を再現できませんでした。
「ServiceKnownTypes」のプロバイダーから「 MyNamespace.MyType 」を除外することで、例外を確実に再現できますが、そもそもこれが断続的に発生する理由はわかりません。
次のスニペットは、サービス宣言を示しています。これは、さまざまな実装タイプの汎用サービスです。. CommunicationException を生成しているのは操作引数 ' arg ' であることに注意してください。
さて、ISomeInterfaceArgumentType の既知の型を提供する KnownTypesCache の実装はそのようなものです。
基本的に、このグローバル スタティック キャッシュは、AppDomain に読み込まれたすべてのアセンブリを照会して、'IKnownTypesPublisher' の実装者を探します。これにより、アセンブリごとに使用可能なシリアル化の型が提供されます。そのため、アセンブリごとに 1 つの IKnownTypesPublisher があり、そのアセンブリでのみ型を識別する役割を果たします。KnownTypesCache はこれらすべてを単純に集約し、実行時に DataContractSerializer に返します。
前述したように、このアプローチは 99% の確率でうまく機能するようです。そして、私が特定できる理由もなく、動作を停止し、iisresetを呼び出すことによってのみ解決できます。
私は今かなり困惑しています。あらゆる種類の解決策を試しましたが、このエラーを確実に再現できるのは月曜日まで待つことだけなので、少し難しいです!
私の最後の考えは、すべてのアセンブリが AppDomain にロードされる前に静的な KnownTypesCache コンストラクターが呼び出される可能性があるため、キャッシュはインスタンスの存続期間中空になるということです...?
c# - Dynamics CRM 原因 CommunicationException
MS Dynamics CRM api を使用してデータ (5000 レコード以上) を取得しています。
XML ベースのクエリを使用してデータを取得しています
時々それが機能し、ほとんどの場合、ログから例外がスローされ、この長い例外が発生しています。
https://orgno.api.crm.dynamics.com/XRMServices/2011/Organization.svcへの HTTP 応答の受信中にエラーが発生しました。これは、サービス エンドポイント バインディングが HTTP プロトコルを使用していないことが原因である可能性があります。これは、HTTP 要求コンテキストがサーバーによって中止されたことが原因である可能性もあります (サービスのシャットダウンが原因である可能性があります)。詳細については、サーバー ログを参照してください。---> System.ServiceModel.CommunicationException: https://orgno.api.crm.dynamics.com/XRMServices/2011/Organization.svcへの HTTP 応答を受信中にエラーが発生しました. これは、サービス エンドポイント バインディングが HTTP プロトコルを使用していないことが原因である可能性があります。これは、HTTP 要求コンテキストがサーバーによって中止されたことが原因である可能性もあります (サービスのシャットダウンが原因である可能性があります)。詳細については、サーバー ログを参照してください。---> System.Net.WebException: 基になる接続が閉じられました: 受信時に予期しないエラーが発生しました。---> System.IO.IOException: トランスポート接続からデータを読み取ることができません: 既存の接続がリモート ホストによって強制的に閉じられました。---> System.Net.Sockets.SocketException: 既存の接続が System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) でリモート ホストによって強制的に閉じられました --- 内部の終わり例外スタック トレース --- System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Net.FixedSizeReader.
なぜこれが起こっているのかわかりませんか?
wcf - Entity Frameworkから結果が返されると、WCF呼び出しが失敗します
EntityFrameworkとWCFを使用して簡単なテストソリューションを作成しました。サービスコントラクトにはGetAllCustomers()
、データベースから顧客を取得してクライアントに返すという関数が1つだけあります。クライアントアプリは関数を呼び出し、顧客名をコンソールに書き込みます。
GetAllCustomers()
クライアントからプロキシ経由で電話をかけるCommunicationException
と、次のメッセージが表示されます。
へのHTTP応答の受信中にエラーが発生しました
http://localhost:8000/Service1
。これは、HTTPプロトコルを使用していないサービスエンドポイントバインディングが原因である可能性があります。これは、サーバーによってHTTP要求コンテキストが中止されたことが原因である可能性もあります(おそらくサービスのシャットダウンが原因です)。詳細については、サーバーログを参照してください。
内部の例外はSystem.Net.WebException
次のとおりです。
基になる接続が閉じられました:受信時に予期しないエラーが発生しました。
次のレベルの内部例外は次のSystem.IO.IOException
とおりです。
トランスポート接続からデータを読み取れません:既存の接続がリモートホストによって強制的に閉じられました。
そして最後の内部例外はSystem.Net.Sockets.SocketException
:
既存の接続がリモートホストによって強制的に閉じられました
クライアントコードは次のとおりです。
ホストアプリケーションのコードは次のとおりです。
関数のサービスライブラリコードは次のとおりです。
不思議なことに、foreachブロックをその下のコメントアウトされたコードに置き換えてデータベースをバイパスすると、うまく機能します。
私は最初、データベースクエリに時間がかかりすぎるというタイムアウトの問題である可能性があると考えました。ただし、私のテストコードには45秒間のスリープがあり、それでもデータはクライアントに正常に返されます。元のコードでは、わずか約3秒後に例外が発生します。
また、エンドポイント/プロキシ経由ではなく、WCFサービスを直接インスタンス化して元の関数(foreachブロックを使用)を呼び出すと、正常に実行され、データベース内のすべての顧客が返されます。
最後に、返されたデータセットが大きすぎることが問題である可能性があると考えたため、foreachブロックを変更し、最初の5人の顧客を結果に追加した後にbreakステートメントを挿入しましたが、それでも例外が発生しました。
それで、他に何がこれを引き起こしている可能性がありますか?
wcf - WCF CommunicationException: 根本原因の理解
WCF サービスに接続するアプリケーションを作成しています。クライアント側で CommunicationException を受け取った場合、問題がサービス側にあるのか、無効なクライアント構成が原因なのかを理解する必要があります。
java - CommunicationException [根本的な例外は ConnectException です: 接続がタイムアウトしました]
Active Directory に接続しようとしているときに、この例外が時々発生します。
これが私のコードです:
この行で接続タイムアウト例外を取得していますctx = new InitialDirContext(env);
。毎回ではありませんが、かなり頻繁に発生します。
この問題を取り除く方法を教えてください。
c# - サーバー呼び出し中の WCF 通信例外
私はこれで暗闇の中でショットを撮っていますが、誰かが以前に遭遇したことを望んでいる問題が発生しています...私のクライアントは、Sqlサーバーからデータを取得するだけのサーバー呼び出しを行いますDB をクライアントに返しますが、クライアントがサーバーから応答を受信しないことがあります。一連のログインを行い、サーバー側コードの最後の行が実行されますが、クライアントは応答を受信せず、その結果、「処理中」のままになります... WCF トレースを追加し、サービスを使用して監視しましたトレース ビューアー。
また、アクティビティ ログに次のテキストを含む例外が表示されます。
誰もこのようなものを見たことがないと思いますが、それを修正する方法についていくつかの推奨事項を教えてもらえますか? どんな情報でも大歓迎です。
ありがとう!
.net - 二重チャネルを使用した未処理の通信例外
サービスとコールバックの相互作用に WCF 二重チャネルを使用しており、さらに別のポートで別のサービスを使用しています。しばらくすると、デュプレックス チャネルに障害が発生しますが、使用しようとすると通信例外が発生します (チャネルにいつ障害が発生するかがわからず、SessionFaulted イベントを使用できません)。受信タイムアウトは無限で、setTimeout は 30 秒です。
問題は、この例外を処理する方法が見つからないことです。スタック トレースがなく、どこにもキャッチできません。
動作拡張機能で診断/エラー処理を使用して調査しましたが、うまくいきませんでした。
例外:
何か案は?
c# - WCF ProtocolException の解析時の System.ServiceModel.CommunicationException
このページの推奨コードを使用しようとしていますhttp://blogs.msdn.com/b/nathana/archive/2011/03/31/deciphering-a-soap-fault-with-a-400-status-code .aspxは次のとおりです。
WCFを使用して.NET 4.5でVS 2012を使用しています。アプリが 400 Bad Request を受け取り、ProtocolException を ParseProtocolException に渡すと、次の行で例外がスローされます。
System.ServiceModel.CommunicationException: 「XML コンテンツをバッファリングするために必要なサイズがバッファ クォータを超えました。」
stream.Length = 2,704 バイトで、それほど大きくありません。このサイトhttp://blogs.msdn.com/b/drnick/archive/2007/08/07/increasing-the-maximum-fault-size.aspxで提案されている解決策を試しました。ただし、MaxFaultSize = 1 Mb でも、同じエラーが発生します。
この行の代わりに:
私はこれを試しました:
すべてのクォータを最大値 (Int32.MaxValue) に設定します。ただし、CreateMessage 呼び出しでも同じエラーが発生します。
System.Net.WebException からのサンプル応答ストリームは次のとおりです。
F# Interactive で作成した非同期 Web クローラーを使用して、名前空間の URL の一部が解決できないことがわかりました。エラーのあるものを修正してから、クローラーを再度実行して名前空間ページの長さを合計しました。合計は 715,965 バイトで、XmlDictionaryReaderQuotas のすべてのクォータの Int32.MaxValue よりもはるかに小さくなっています。おそらく、XmlDictionaryReader にバグがあるか、それが返すエラーが本当の問題ではないでしょうか?
最終的に、SOAP-ENV:Body で実際には使用されなかった名前空間定義を削除することで、メッセージの作成が機能するようになりました (つまり、Subcode 要素で使用される xmlns:ter のみを保持します)。しかしもちろん、サービスが SOAP エラーを生成しているため、これで問題が実際に解決されるわけではありません。サービスの実装を変更することはできません (これはサードパーティのデバイスです - Onvif カメラです)。
さらに、クォータをこれ以上大きくすることはできません。では、この例外を他にどのように処理するのでしょうか?