カテゴリー別アーカイブ: 予期していない動作について

Curlにてエラーや例外が発生した際の対処方法を紹介いたします。
 

OpaqueSecurityExceptionについて

【ご質問】
独立型アプレット起動時にエラーとなり、以下のメッセージが出力される。

===================================
独立型アプレット ‘http://[URL]/start.dcurl’ をロードできませんでした:
SyntaxError: http://[URL]/start.dcurl: 既定のマニフェストをインポートできません:
OpaqueSecurityException: http リクエストまたは他のネットワーク接続を作成しようとしていたときに、
セキュリティ エラーが発生しました。
===================================

【回答】
(1) 信頼できるアプレット又は特権アプレットとして起動する場合、以下の項目について確認を行ってください。
・アプレットの特権設定が正しく設定されているか

(2) 非特権アプレットとして起動する場合、以下の項目について確認を行ってください。
・curl-access.txtの記述に問題がなく、適切な場所に配置されているか

(3) 上記(1)、(2)について不明な場合、貴社のシステム管理者またはご利用アプレットの提供元にお問い合わせください。

エラーメッセージ:「~送信に失敗しました:サーバーに接続できませんでした (12029)」

【ご質問】
アプリケーションの起動時に予期していないアプレット例外が発生し、
「Error: HttpException: “URL~”の送信に失敗しました:サーバーに接続できませんでした (12029)」
というメッセージが出力されました。

アプレット例外が発生する原因として、どのようなことが考えられるでしょうか。

【回答】
表示されている”12029″はCurlより呼び出しているWindowsAPI(WinInet)のエラーコードです。

該当の端末からCurlアプレットが配置されているWebサーバに対し、
何らかの理由によりアクセスすることができなかったため発生したと考えられます。

まずは、該当の端末からCurlアプレットが配置されているWebサーバに対して、以下の確認を行ってください。

 [確認項目]
  ・pingコマンドでWebサーバとネットワークレベルで接続されているか
  ・他のWebサイト(yahooやgoogle等)を見ることはできるか
  ・パーソナルファイアウォールやアンチウィルスソフトなどのセキュリティソフトはインストールされているか
   ※インストールされている場合、Curl関連のプロセスが遮断される設定になってはいないか
  ・Curlの配置してあるWebサーバにアクセスするためにはプロキシの設定が必要ではないか
  ・Curlアプレットが配置してあるWebサーバで該当の端末を使って表示できないコンテンツはCurlアプレットのみか
   ※例えば、HTMLファイルを”http://[該当アプレットが配置してあるURL]/test.html”の様に配置して
    アクセスすると正常に表示されるか

このエラーが発生する場合、ネットワークやOSの設定を見直すことで回避可能なケースが多くございます。

 

エラーメッセージ:「~送信に失敗しました:(12057)」

◆ご質問◆
アプリケーションの起動時に予期していないアプレット例外が発生し、
「Error: HttpException: “URL~”の送信に失敗しました(12057)」というメッセージが出力されました。

アプレット例外が発生する原因として、どのようなことが考えられるでしょうか。

◆回答◆
CurlではWininetの通信メカニズムを用いております。
今回頂いたHttpExceptionはCurl独自で作成したものではなく、
OS側より発生したエラーをCurlが受け取りスローしております。

表示されている”12057″は、
「ERROR_INTERNET_SEC_CERT_REV_FAILED」であり、
ブラウザが証明書失効リスト(CRL)を配布しているサーバに接続できず、
CRLを確認できないことを示しています。

原因はこの証明書失効リストを確認できず、サーバ証明書の正当性が証明されなかったため、
このサーバからのコンテンツを取得できなかったものと思われます。

この現象を回避するには、以下のことが挙げられます。
 ・証明書失効リストを確認しないように設定する
 ・証明書失効リストを配布しているサーバに接続できるようにする

「証明書失効リストを確認しないように設定する」は、
具体的には、インターネットオプションの
「詳細設定」→「サーバー証明書の取り消しを確認する」のチェックを
外すことを意味します。

また、マイクロソフトのサイトにも関連性のある情報がございます。
http://support.microsoft.com/kb/896219/ja

httpsを利用している場合で
[暗号化されたページをディスクに保存しない]を有効にしている、
または、http、httpsを問わず、サーバーがCache-Controlヘッダを利用して、
キャッシュを保存させないようにしている場合は、
ファイルのダウンロードに失敗します。

http://support.microsoft.com/kb/969608/ja

Active Directory の権限管理サービスで保護されているコンテンツを
作成や開くことができず、エラー コード 12057 が記録されます。

 

 

Curl RTEインストールエラー

◆ご質問◆
Curl RTEインストール時に以下のエラーメッセージが表示される。。
 
「Throwing unexpected: Error: Failure in ‘registry-set-string’.
  *** Error encountered: Error: Failure in ‘registry-set-string’.
  To dismiss this window, press the ‘enter’ key.」

◆回答◆
Administrator権限でインストールを行われていない可能性があります。
権限の確認をお願いいたします。

Administrator権限で行われているにも関わらず、インストールできない場合は下記項目をご確認下さい。
 ・システム要件を満たしているか。
 ・常駐アプリを全て終了しているか。
 ・アンチウィルスソフトを無効にしているか。

エラーメッセージ:「対処されていない C++ の例外がスローされました。」

◆ご質問◆
CurlでSHELL32を使用してファイルを開くプログラムを実行すると、Exceptionが発生し、
「対処されていない C++ の例外がスローされました。」とのメッセージが出力される。
※エクセルのマクロでSHELL32を使用してファイルを開くプログラムを実行すると正常に開かれる。

Exception発生の原因としてどのようなことが考えられるでしょうか。

◆回答◆
「対処されていない C++ の例外がスローされました。」
このメッセージはWinAPI側(shell32)に問題があって、Curlがスローしているものと推察されます。

原因としては以下のようなことが考えられます。
 ・開こうとするファイル名称、パス等に特殊な文字が使われている
 ・拡張子と実行プログラムの関連付けがおかしくなっている
 ・実行しようとするアプリケーション、
  または、アプリケーションにリンクしているライブラリが壊れている

「Could not start ‘surge.exe’」というエラーについて

【ご質問】
SurgeRTEをインストール後、Curlアプリケーションを起動しようとしたところ、
起動できないという現象が発生しました。

Curlコントロールパネルを起動しようとしても、「Could not start ‘surge.exe’」
とメッセージが表示され起動できません。

また、「コントロールパネル-プログラムの追加と削除」よりアンインストール
しようとしたところ、アンインストールが実行されません。

この現象の原因と対処法を教えて頂けますでしょうか?

【回答】
「Could not start ‘surge.exe’」というエラーが発生する要因としては
過去の事例からは以下のことが考えられます。

1.インストールに失敗している
なんらかの原因でインストールに失敗している可能性があります。
例.administrator以外の権限でインストールを行った。
→Curlを一度アンインストールした後、再度インストールを行うことで
  現象が解消することがあります。
  アンインストールが正常に実行できない場合は以下のページを参考に
  手動アンインストールを実行してください。
  http://developers.curlap.com/faq/50-faq-not-expectation/790-manual-uninstall-winxp.html
  http://developers.curlap.com/faq/50-faq-not-expectation/789-manual-uninstall-win7.html

  その他インストール時の注意点に関しては、下記のページをご参照ください。
  http://www.curlap.com/download/rte/installation.html

2.セキュリティソフトの影響を受けている
ウイルス対策ソフト・パーソナルファイアーウォールなどのセキュリティソフトの
影響を受けている可能性があります。
例.セキュリティソフトがCurlを起動するために必要なファイルをロックしている。
→セキュリティソフトを無効化して現象が解消しないか確認することで切り分けできます。
  セキュリティソフトのログなどを確認することで結うような情報が得られる場合もあります。

3.(WindowsVista・7・8)UACの影響を受けている
WindowsOSのUAC(ユーザーアカウント制御)の影響を受けている可能性があります。
→UACを無効化して現象が解消しないか確認することで切り分けできます。

プロキシキャッシュの制御について

◆ご質問◆
 最新版同期がうまくいかない原因が、
 Proxyサーバーによるキャッシュが原因だったとした場合、
 Proxyサーバー側で 拡張子.curl や.mcurlに対する振る舞いを変更しないと
 いけないのでしょうか?
 

◆回答◆
Webサーバのレスポンスを返す設定の中で「Cache-Control」ヘッダーを適切に設定して
頂くことが対策として考えられます。
この設定を行うことで途中の経路上でむやみにキャッシュに記録され、再利用さ
れないようになります。

なお、「Cache-Control」とはCurlの設定ではありません。

Cache-Controlとは、
————————————————————————
HTTPが規定するヘッダーの一つで,
キャッシュ・サーバーの動作を指定する。
キャッシュ・サーバーが読み取り,指示された動作を実行する。
no-cache(キャッシュ禁止)やmax-age(最大有効期限)などの
サブ命令を数多く持つ。
————————————————————————

Curlだけの設定ではプロキシサーバのキャッシュ機能をコントロールすることは不可能であり、
HTTPのレスポンスヘッダーの中でCache-Controlを設定することで
プロキシサーバのキャッシュ機能を「キャッシュ禁止」や、「有効期限の設定」を
行ったりすることが可能となります。
HTTPのレスポンスヘッダーの中にCache-Controlを設定するには
Webサーバの設定を変更等をして頂く必要があります。

 

create-Fileプロシージャ使用時のException

◆ご質問◆
「隠しファイル」属性のローカルファイルに対してcreate-File プロシージャを実行すると “PermissionDeniedFileException”が発生する。

◆回答◆
現在のCurlの仕様では
隠しファイル属性を持ったファイルに対して”create-Fileプロシージャ”を使用してファイルを作成した場合、
上記のExceptionが発生し新規にファイルを生成することは出来ません。

お手数をお掛け致しますが、何卒御理解頂けます様御願い致します。

 

エラーメッセージ:「Failure loading “URL”」

◆ご質問◆
Curl起動ファイル実行時に「Failure loading “URL”」というメッセージが出力する。
原因はどのようなことが考えられるでしょうか。

◆回答◆
「Failure loading “URL”」のエラーが発生するのは”URL”で示されたCurlの起動ファイルが
何らかの理由で取得できなかった際に発生します。

<考えられる原因例>
 ・ネットワークの切断
   →画面遷移の途中で何らかの理由によりネットワークが切断され、ファイルが参照できなくなった。
 ・サーバとの接続が切断
   →何らかの理由によりサーバに接続できなくなり、ファイルを参照できなくなった。
 ・ファイルの削除、リネーム
   →ブラウザよりファイルを起動した後、何らかの理由によりファイルを削除もしくはリネームをした。

さらに、根本的な原因の究明には以下の状況を確認する必要があります。
 ・なぜCurlの起動ファイルが取得できないのか
 ・どのようなレスポンスがサーバから返却されているのか
 ・そもそも、リクエストがサーバに送信されているのか
  (どのようなリクエストがサーバに送信されているのか)

パッケージキャッシュについて

【ご質問】
 RTEコントロールパネルで、「(推奨)パーシステントパッケージキャッシュを有効にする」をチェックしています。
 また、「全てのアプレットの再同期を強制する」を選択しています。
 アプレットが変更された後、突然エラーになるPCがあります。
 「キャッシュを空にする」ボタンを押して再操作すると正常に動作します。
 どういった原因が考えられるでしょうか?

【回答】
このエラーは、キャッシュされたアプレットの構成ファイル(パッケージ)の
整合性が取れていないことが原因だと考えられます。

既にキャッシュとしてパッケージファイルが存在している状態で、
ファイルの修正およびデプロイを行うと修正されたパッケージファイルがキャッシュとして保存されます。
しかし、何らかの理由により”一部の”パッケージファイルは更新されず、
以前のパッケージがそのまま残ってしまった(つまりパッケージファイルの整合性が取れていない)場合、
追加・修正した内容が認識されません。
パッケージファイルの整合性が取れていない状況下で、
今回修正した処理を別パッケージから呼び出そうとした場合、
エラーの発生や追加・修正を行った処理内容が反映されない等の問題が生じます。
このような問題は、キャッシュをクリアすることにより、新旧パッケージが
削除され、再度パッケージを取得しなおすことになり、
パッケージ間で整合性が取れるようになります。
よって今回の現象が解消されることになります。

また、このような再デプロイ時の問題を解消する為には
resync-as-of 又はresync-file をご使用ください。
こちらを使用することで、強制的にパッケージキャッシュの同期を取ることができます。

詳細は、Curl開発者ガイドの
[コンテンツの構成要素]-[キャッシュと同期]
の項をご参照ください。