問題タブ [serverxmlhttp]
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.
vba - MSXML2.ServerXMLHTTP を使用したカスタム ヘッダー
現在、MSXML2.ServerXMLHTTP を使用して POST http 要求を送信しようとしています。リクエストが承認されるようにカスタム ヘッダー「Auth」を追加する必要がありますが、機能していないようです。これが私の事後機能のコードです:
そして、「エラー -2147012746 要求されたヘッダーが見つかりませんでした」というメッセージが表示されます (コンピューターで別の言語を使用しているため、メッセージは実際に翻訳されています)。
ただし、「Microsoft.XMLHTTP」オブジェクトではこの問題はありませんでした。私は何か間違っていますか?
お時間をいただきありがとうございます。
xmlhttprequest - POST の実行時に ServerXmlHttpRequest が時々ハングする
ServerXmlHttpRquest
HTTP の実行に関連する作業を定期的に行う仕事がありますPOST
。ジョブは 60 秒ごとに実行されます。
また、通常は問題なく動作します。ただし、50,000 分の 1 の確率 (2 ~ 3 か月ごと) でハングする可能性があります。
ハングすると、タスク スケジューラ (実行に 3 分以上かかる場合にジョブを強制終了するオプションが有効になっている) でさえ、タスクを終了できません。リモートの顧客のネットワークに接続し、サーバーにアクセスし、タスク マネージャーを使用してプロセスを強制終了する必要があります。
そして、さらに1〜3か月は有効です。
最終的に、タスク マネージャーを使用してプロセス ダンプを作成するようになりました。
だから私はハングがどこにあるかを分析することができました. 5 回のクラッシュ ダンプ (過去 11 か月ほど) の後、一貫した画像が得られます。
だから私は をしますServerXmlHttpRequest.send
、そしてそれは決して戻りません。それは何日もそこにとどまります(システムが金融取引を逃す原因となり、日曜日の夜になるまで、システムが壊れているという電話がかかります)。
誰かがコードをデバッグする方法を知らない限り、それは役に立ちませんが、ダンプ時に停止したスレッドのレジスタは次のとおりです。
- Windows Server 2012 R2
- マイクロソフト IIS/8.5
ServerXmlHttpRequest のデフォルトのタイムアウト
を使用serverXmlHttpRequest.setTimeouts(...)
して、タイムアウトの 4 つのクラスを構成できます。
- resolveTimeout : この値は、ホスト名 (「www.microsoft.com」など) を IP アドレスにマッピングするために適用されます。デフォルト値は∞で、タイムアウトなしを意味します。
- connectTimeout : 長整数。この値は、ターゲット サーバーとの通信ソケットの確立に適用されます。デフォルトのタイムアウト値は 60 秒です。
- sendTimeout : この値は、通信ソケット上の要求データ (存在する場合) の個々のパケットをターゲット サーバーに送信する際に適用されます。サーバーに送信される大きなリクエストは、通常、複数のパケットに分割されます。送信タイムアウトは、各パケットを個別に送信する場合に適用されます。デフォルト値は30 秒です。
- receiveTimeout : この値は、ターゲット サーバーからの応答データのパケットの受信に適用されます。大きな応答は複数のパケットに分割されます。受信タイムアウトは、ソケットからのデータの各パケットのフェッチに適用されます。デフォルト値は30 秒です。
KB305053 (接続を開いたままにしておくことを決定したサーバーは、接続が閉じるまで serverXmlHttpRequest を待機させます) は、もっともらしい問題のようです。しかし、デフォルトの 30 秒のタイムアウトで問題は解決します。
考えられる回避策 - 自分自身をジョブに追加する
Windows タスク スケジューラがタスクを終了できません。オプションが do do に有効になっているにもかかわらず。
Windows Job API を使用してセルフプロセスをジョブに追加し、それを使用SetInformationJobObject
してプロセスに時間制限を設定する方法を検討します。
プロセスの実行時間を 3 分に制限するには:
PerProcessUserTimeLimit LimitFlagsがJOB_OBJECT_LIMIT_PROCESS_TIMEを指定する
場合、このメンバーはプロセスごとのユーザー モード実行時間制限 (100 ナノ秒単位) です。それ以外の場合、このメンバーは無視されます。システムは、ジョブに関連付けられた各プロセスが、設定された制限よりも多くのユーザー モード時間を蓄積しているかどうかを定期的に確認します。存在する場合、プロセスは終了します。
ジョブがネストされている場合、有効な制限は、ジョブ チェーン内で最も制限の厳しい制限です。
タスク スケジューラはジョブ オブジェクトを使用してタスクの時間も制限するため、ジョブ オブジェクトがジョブを制限できるとは思えません。
編集: ジョブ オブジェクトは、プロセス時間によってプロセスを制限することはできません。ユーザー時間のみです。また、プロセスがアイドル状態でオブジェクトを待機している場合、ユーザー時間はまったく蓄積されません (3 分もかからないことは確かです)。
ボーナスリーディング
- ServerXMLHTTP GET 要求はどのようにハングしますか? (
GET
、ないPOST
) - KB305053: POST 要求を送信すると、ServerXMLHTTP が応答を停止します (これは、タイムアウトが期限切れになる必要があることを示しています。私の場合はそうではありません)
- MS フォーラム: oHttp.Send - ハングする (
HEAD
, notPOST
) - MS フォーラム: MSXML2.ServerXMLHTTP Send を使用して SOAP WebService をテストするための ASP がハングする
- CC から MS へのサポート フォーラム
https - クラシック ASP で外部の安全な https ページに Http Post 要求を送信する方法は?
httpsで始まる外部ページに http リクエストを送信できません。ただし、setOption(2) = 13056 を使用してセキュリティ エラーを無視すると、次のエラーが表示されます: msxml3.dll エラー '80072f8f' セキュリティ エラーが発生しました。サーバー構成にアクセスできず、プログラムによる解決策を探しています。
vbscript - XMLHTTP.Open メソッドが認識されない
タイプのオブジェクトを作成しようとしましたMSXML2.XMLHTTP.6.0
が、メソッド Open を呼び出すとエラーが発生します:
オブジェクトはこのプロパティまたはメソッドをサポートしていません。
これが私のコードです:
TLS 1.2 を使用してみましたが、同じことが起こります。変数はstrURL
HTTPS でアドレスを受け取ります。
助言がありますか?
asp-classic - 従来の ASP を使用した MSXML2.ServerXMLHTTP が破損したイメージを返す
私は何年も MSXML2.ServerXMLHTTP を使用していませんでしたが、今では使用する必要があります。MSXML2.ServerXMLHTTP を使用してページを取得すると、ページが壊れた画像で返されます。過去にこれを行ったことを覚えています。使用するコード行があり、画像は完全に解決されました。ベースURLを設定するようなものでした。コードがどうなるか知っている人はいますか?私が使用しているコードは次のとおりです。
iis - URL にカスタム プロトコルを使用して ServerXMLHTTP を作成する
これが私がやろうとしていることです...
そして、ここに私が返すエラーがあります...
msxml3.dll エラー '80072ee6'
URL は認識されたプロトコルを使用していません
HTTP プロトコルを使用して (つまりhttp://recservice.com
、の代わりにccte://recservice.com
) 要求を行うと、正常に動作します。ServerXMLHTTP リクエストをカスタム プロトコルで動作させるために、IIS 構成内でできることはありますか?