- PR -

WEBアプリからコンソールアプリの実行について

1
投稿者投稿内容
うみの
常連さん
会議室デビュー日: 2006/08/23
投稿数: 20
お住まい・勤務地: 千葉・埼玉
投稿日時: 2006-12-26 18:53
新規開発中のWEBアプリから、既存システムで使用しているコンソールアプリを
起動しようとしています。
コンソールアプリはサーバにて実行します。

コンソールアプリは以下の動作を行います。
・iniファイルを読み出す
・Oracle接続し、SQLを発行(select、update)
・処理ログをtxtに書き出す

アプリ自体の起動は成功しiniファイルの読み込み、ログ書き出し処理も
正常に動作しますが、Oracle接続のタイミング(Fillメソッド呼び出し)
にて下記の例外が発生してしまいます。

「'ResourcePool' は現在のプラットフォームではサポートされません。」

コンソールアプリはEXEを直接起動した場合は正常に動作します。
どなたか上記の原因をお分かりになる方いらっしゃいませんでしょうか?

Visual Studio2003
Windows XP Professional

コンソールアプリのOracle接続部分のコード

OracleConnection cn = new OracleConnection(Common.ConnectionString);
OracleCommand cmd = new OracleCommand(stbSql.ToString(), cn);
OracleDataAdapter adp = new OracleDataAdapter(cmd);

DataSet ds = new DataSet();
adp.Fill(ds);

adp.Dispose();
cmd.Connection.Dispose();
cn.Close();


以上です。
ひろ@ya
大ベテラン
会議室デビュー日: 2006/02/23
投稿数: 168
投稿日時: 2006-12-27 09:11
ResourcePool is not supported on the current platform
で検索すると海外の掲示板・フォーラムでの類似事象の情報が多数見つかりますね。
うみの
常連さん
会議室デビュー日: 2006/08/23
投稿数: 20
お住まい・勤務地: 千葉・埼玉
投稿日時: 2006-12-27 10:25
ひろ@yaさん、ありがとうございます。例外の英文は検索してませんでした。
早速検索してみました・・・英語がさっぱり分かりませんが・・・orz

何とか拾い読みして得られた情報から、connectstringに"Pooling=false"を加えてみたところ、問題が解消されました。

ただ、Pooling=falseとすることがどういう意味を持つのかが理解できていないため、
そのまま適応というのはちょっと怖いです。
Poolingの意味を調べてみようと思います。

ありがとうございました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-12-27 11:09
引用:

うみのさんの書き込み (2006-12-27 10:25) より:

ただ、Pooling=falseとすることがどういう意味を持つのかが理解できていないため、
そのまま適応というのはちょっと怖いです。
Poolingの意味を調べてみようと思います。


「コネクション プーリング」 あたりで検索すると良いでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
うみの
常連さん
会議室デビュー日: 2006/08/23
投稿数: 20
お住まい・勤務地: 千葉・埼玉
投稿日時: 2006-12-27 11:33
じゃんぬねっとさん、ありがとうございます。

いろいろ検索してみました。
Poolingというのは、コネクションに限らず一度利用したリソースを貯めておいて再利用することによりパフォーマンスを向上させたり、リソースを有効利用する仕組みと理解しました。

今回の運用では、WEBアプリ上に問題のコンソールアプリを起動するボタンを、ある権限を持ったユーザにのみ見せて、1日に数回程度押されるようなものですので、特にパフォーマンスを気にする必要がありません。このため、"Pooling=false"にて実装しようと考えています。

もし見当違いの認識だった場合はご指摘いただけると幸いです。



しかし・・・元々の

  「'ResourcePool' は現在のプラットフォームではサポートされません。」

が出る原因ってなんだったのでしょう・・・
ヘルプにてResourcePoolのコンストラクタの項目を見ると、

「直前の呼び出し元の完全信頼。このメンバは、部分的に信頼されているコードから使用することはできません。」

と記載されているので、IEのセキュリティ設定の問題かとも考えたのですが、「現在のプラットフォームではサポートされません」と出ているので引っかかっています。
そもそもIEのセキュリティでインターネットゾーンの信頼度を上げても(セキュリティレベルを落としても)例外は解消されませんでしたし。

WEBアプリを起動しているユーザの権限の問題なのでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)