問題タブ [soaphttpclientprotocol]
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# - 遅い SoapHttpClientProtocol コンストラクター
Microsoft Dynamics CRM を使っていくつかの実験を行っています。Web サービスを介して対話し、プロジェクトに Web 参照を追加しました。Web サービス インターフェイスは非常に豊富で、生成された "Reference.cs" は 90k loc です。
コンソール アプリケーションで Web リファレンスを使用しています。私はしばしば何かを変更し、再コンパイルして実行します。コンパイルは高速ですが、Web サービス参照の更新は非常に遅く、15 ~ 20 秒かかります。
CrmService service = new CrmService();
プロファイリングにより、すべての時間が SoapHttpClientProtocol コンストラクターで費やされていることがわかります。
原因は明らかに、XML シリアライゼーション コード (上記の 90k loc には含まれていません) が、JIT される前に実行時に生成されるという事実です。これは、コンストラクターの呼び出し中に発生します。遊んで試してみると、待ち時間はかなりイライラします。
sgen.exe、ngen、および XGenPlus (数時間かかり、500MB の追加コードが生成される) のさまざまな組み合わせを試しましたが、役に立ちませんでした。私は、必要に応じて準備ができている CrmService インスタンスがほとんどない Windows サービスを実装することを検討しましたが、それは過剰に思えます。
何か案は?
wcf - WCF サービスのクライアントの証明書失効をオフにする方法は?
WCF サービスのクライアントの証明書の失効を無効にするにはどうすればよいですか? クライアント プロキシは wsdl.exe によって生成され、SoapHttpClientProtocol を継承します。
c# - SoapHttpClientProtocol の実装方法
この質問は、SoapHttpClientProtocol がスレッドセーフではないことを示しているためです。そして、私の実際のテストでは、私の SoapHeader プロパティが呼び出し間で混乱し続けているため、これが真実であることがわかりました。これをスレッド間で使用し、プロパティを正しく保つことができるようにする方法はありますか? そして、別のスレッドが接続を閉じたときに、あるスレッドが接続が開いていると考えているという質問で与えられた例に遭遇しないようにしてください。リクエストが行われた後、soap ヘッダーの値について心配する必要はありますか? リクエストが発行されるまで、プロパティが設定どおりであることを確認するにはどうすればよいですか?
c# - HTTPリクエストのヘッダーと本文を並行して送信するようにC#Webサービスクライアントを構成するにはどうすればよいですか?
SoapHttpClientProtocolを継承して、VS2008 .Net 3.5で生成された従来のC#Webサービスクライアントを使用しています。これは、Javaで記述されたリモートWebサービスに接続しています。
すべての構成はクライアントの初期化中にコードで行われ、以下で確認できます。
すべて正常に機能しますが、最も単純なメソッド呼び出しの実行にかかる時間は、ネットワークのping時間のほぼ2倍です。Javaテストクライアントはネットワークのping時間とほぼ同じですが、次のようになります。
セッションのTCPトラフィックを分析した後、次のことがわかりました。
基本的に、C#クライアントは次の順序でTCPパケットを送信しました。
Javaクライアントは、次の順序でTCPパケットを送信しました。
Javaクライアントのようにヘッダー/本文を並列に送信するようにC#Webサービスクライアントを構成する方法はありますか?
どんな助けやポインタも大歓迎です。
c# - Get underlying WebResponse from MethodInfo generated from SoapHttpClientProtocol
I've spent a while looking at this but am struggling to get any useful answers.
Basically I have a SoapHttpClientProtocol that I've compiled from a WSDL previously. I then get the MethodInfo for my particular method from the clientProtocol and Invoke it using the standard Invoke method.
What you get back is just the response from the web service cast as an object. What I want to do is get the actual SOAP response that is passed back so I can get into the actual XML. I have seen a non-thread safe way of doing this but that is no help in this case. Does anyone know a way of doing this. Maybe some form of proxy?
Would be extremely grateful if anyone could help.
.net - SoapHttpClientProtocolはプロキシ資格情報をキャッシュしますか?
.NET4で、SoapHttpClientProtocolがプロキシ資格情報をキャッシュしているように見えることに気づきました。これが本当かどうか、そしてこのキャッシュを更新する方法を誰かが知っていますか?ユーザーが資格情報を変更した場合、それらを試してみたいのですが、SoapHttpClientProtocolが正常に接続されると、呼び出す呼び出しが機能しているように見えます。
このプログラムの出力(最後の2つはfalseであると予想しています)
.net - SoapHttpClientProtocolは、ProxyNameResolutionFailureではなくNameResolutionFailureをスローします
プロキシ名が無効な場合、SoapHttpClientProtocolはステータスNameResolutionFailureのWebExceptionをスローします。それでは、エラーが発生しているのがプロキシなのか宛先なのかをどのように判断できますか?
NameResolutionFailureが表示されたときに、プロキシサーバーが存在するかどうかのチェックは実行したくありません。私が考えることができる唯一の考えは、WebException.messageプロパティをチェックして、プロキシ名と宛先名が含まれているかどうかを確認することですが、これは厄介なようです。それは利用可能な最高のものですか?
.net - SoapHttpClientProtocol から継承したクライアント クラスから HTTP ヘッダーを設定する方法
SoapHttpClientProtocol から継承されたクラス MyClass を使用しています (サービスを表す .wsdl ファイルから WebReference を作成することにより、プロジェクトで自動生成されます)。
このサービスの「WebMethod」を呼び出す前に、リクエストの http ヘッダーをカスタマイズする必要があります。そのように SoapHttpClientProtocol の GetWebRequest() メソッドをオーバーロードしてみました:
GetWebRequest が MyClass のコンストラクターで呼び出されることを望んでいましたが、明らかにそうではありません。
誰かが私を助けることができますか?
c# - SoapHttpClientProtocol を拡張して障害のあるサーバーを修正する Content-Length
最近、SOAP::Lite を使用して作成された Web サービスにアクセスする必要が生じました。WSDL がなく、適切なデータ型が返されないなどの理由で使用するのは非常に面倒です。そのため、提供されたサンプル コードを使用して開始しました。
最初から問題が発生し、リクエストがタイムアウトしました。時々頻繁に、時にはめったにありませんが、完全に問題がないわけではありません。Fiddler を使用してトラフィックを盗聴し、検索した後、SOAP::Lite にバグがあり、UTF-8 でエンコードされたデータを処理するときにヘッダー Content-Length を台無しにしたようです。私の分析では、クライアントが追加のデータ (Content-Length) を待っている間にタイムアウトが発生し、サーバーはそれが完了した (実際のデータ) ことを示しているため、これは妥当と思われます。
したがって、この誤ったヘッダー フィールドに対抗する方法と、次のいずれかが必要です。
- 正しい Content-Length または
- Content-Length に一致するようにペイロードをパディングします
問題は、解析が開始される前に Invoke() が最終的に IoException または WebException をスローするため、SoapExtension またはその他の変更を使用する機会がないことです。また、WS は私のものではなく、ほとんど変更できないと思います。
また、SoapHttpClientProtocol.GetWebResponse() をオーバーライドして非同期リクエストを実行しようとしましたが、HttpWebRequest.EndGetResponse() を呼び出す前に ResponseStream を取得できず、常に例外がスローされたため、それも役に立ちませんでした。
私がこれにどのようにアプローチできるか、誰かが考えていますか?
更新: 今では WCF も試しましたが、MSDN でこの投稿に出くわしました- 答えはあまり高揚しません。基本的に、これは配管の奥深くで発生し、ユーザー コードからアクセスできません。私の最善の策は、Fiddler スクリプトを使用して Content-Length ヘッダーを修正することです。この WS は HTTPS でのみ利用できるため、おそらく簡単ではありません。
/ダン
service - SoapHttpClient サービスの呼び出しで http ヘッダーを追加する
パートナーが提供するサービスを利用する必要があります。私はほとんど指示を受けませんでしたが、セキュリティは PasswordDigest であると言われました。調べてみると、すぐに WSE への言及がたくさんあったので、やめました。実装は非常に簡単で、すぐにメッセージの SOAP ヘッダーにある PasswordDigest を使用する標準の WSE ユーザー トークンを取得しました。
今日テストを開始したとき、(エラー メッセージによって) 状況が正しくないことがすぐにわかりました。結局のところ、パートナーは SOAP ヘッダーを調べず、http ヘッダーのセキュリティ情報を必要としています。
カスタム HTTP ヘッダーをプロキシ クラスに追加する方法に関する記事をたくさん見てきましたが、私のプロキシは、追加するヘッダー コレクションを持たない SoapHttpClientProtocol から継承しています。生の httpWebRequest を作成することを検討していましたが、処理する複雑なパラメーターを持つ特定のアクセス方法があります (それに加えて、バックワードに行くように感じます)。
GetWebRequest メソッドを持たないサービス プロキシ クラスにカスタム http ヘッダーを追加する最良の方法は何ですか?
参考のため:
プロキシ クラスの宣言:
呼び出す必要があるターゲット メソッド:
サービスへの実際の呼び出しは単純です。渡されるオブジェクトは次のとおりです。
ありがとう。