PostgreSQL + Npgsql + iBATIS.NETで二層コミット(分散トランザクション)

psqlodbcだと、不明なエラーが出るのでNpgsqlを使うことにした。
(普通は最初からこっち使うんだろうけど。。。)

Npgsql2.2をサイトからダウンロードする。
(Postgresのアプリケーションスタックビルダでダウンロードしても、アセンブリが見つからないから
サイトから直接ダウンロードしました。)

NpgsqlをBINフォルダに入れる。

iBATISのproviders.configで、Npgsqlの設定を以下のようにする。

sqlmap.configに以下の設定




Enlist=True;で、System.Transactionに対応するようになって
二層コミット(分散トランザクション)できるようになるっす。

properties.configに設定する値。








これでTransactionScopeで自動的に分散トランザクションに参加しますっす。
時間がたつとエラーはきます。。。

IBatisNet.DataMapper.Exceptions.DataMapperException: Unable to open connection to "PostgreSql, Npgsql provider V2.0.2.0". ---> System.Runtime.Remoting.RemotingException: オブジェクト '/6a15b01a_b95b_4c4b_8d64_8cc3d5bd67d9/qwg9otzzoa7hkooguxaairxh_10.rem' が切断されたか、サーバーに存在しません。

IISを再起動したら直るんだけど。。。

ローカルIISにて、0x80070005エラー

Webサイトにアクセスして、以下のエラーが発生

サーバー アプリケーションは使用できません

この Web サーバーでアクセスしようとしている Web アプリケーションは現在使用できません ; Web ブラウザの [更新] ボタンをクリックして再試行してください。

管理者メモ: この特定の要求エラーの原因を説明するエラー メッセージを Web サーバーのアプリケーション イベント ログで確認できます。Web サーバーのアプリケーション イベント ログを参照してエラーの原因を調べてください。

イベントログには以下のエラー

ASP.NET プロセス識別にグローバル アセンブリ キャッシュの読み取り権限がないため、要求を実行できませんでした。エラー 0x80070005 アクセスが拒否されました。

詳細な情報は、http://go.microsoft.com/fwlink/events.asp の [ヘルプとサポート センター] を参照してください。

解決方法

フォルダにASPNETに変更の権限を与える。





以上です。

Trac Lightning入門します。

ガンガン調べて生きたいですが、
まずはいろはのいからはじめていきます。


わかりやすい入門サイトメモ


ユカイ、ツーカイ、カイハツ環境!
http://www.atmarkit.co.jp/fjava/rensai4/devtool01/devtool01_1.html

_svnをインポートしたくない

ASP.NETで、本番稼動中のディレクトリに_svnをインポートしたくないんですが
やり方がわかりません。


とりあえず、使えそうなのをメモ


無視するファイルとディレクト
http://www.caldron.jp/~nabetaro/svn/TortoiseSVN-trunk/TortoiseSVN_ja/tsvn-dug-ignore.html#tsvn-dug-ignore-glob

やりかたワカりますた。また今度メモル

.NETでCOM+コンポーネント作成

iBATIS.NET + psqlODBC + PostgreSQL8.3.3

この構成で分散トランザクションを利用したかったのですが、
トランザクションのcomplete()でコミットした後、
処理が戻らず必ずIISが落ちてしまう現象にはまりました。
(DB上はコミットされています。)


AccessViolationExceptionが発生しているみたいですが、
検知する前に.netが落ちるのか、それを検知できたりできなかったりしました。


レガシーASPで自動トランザクションが正常動作する事は確認できていましたので、
COM+の自動トランザクションを試してみたところ、成功しました。


.NETとCOM+の分散トランザクションの実装が違うんですかね。。。??


とりあえず.NETでCOM+コンポーネントを作成する手順をメモル。


参考:
.NET で COM+ サービスを使用する
http://www.microsoft.com/japan/msdn/net/upgrade/comservnet.aspx


コマンドプロンプトで厳密な名前を作成

sn -k ComName.snk

・クラスに属性を追加。

' COM+ アプリケーション名を指定。

' 作成した厳密な名前を指定。

_
Public Class COMPlusServices

・自動トランザクションを動作させたいメソッドに属性追加

_
Public Function TransactionMethod() As String

・一度呼び出せばCOM+サービスに自動登録される。
※ASP.NETの場合は、あらかじめexeを作成して管理者権限で一度呼び出す。

Dim cn AS ComName = New ComName


・例外は、ちゃんとシリアライズ可能にしておかないと駄目!
参考:
十分に調節された例外
http://www.microsoft.com/japan/msdn/columns/csharp/csharp08162001.aspx


public Class MyException
Inherits Exception

public Sub New(info As SerializationInfo, context AS StreamingContext)
MyBase(info, context)

「Microsoft Silverlight Tools」正式版をリリース

Web開発するなら、こういうのも触らないとだめですよね



Microsoft Silverlight Tools」正式版をリリース
http://www.microsoft.com/downloads/details.aspx?familyid=C22D6A7B-546F-4407-8EF6-D60C8EE221ED&displaylang=ja