- PR -

.NET リモーティングにて、ErrObjectを正しくクライアント側に返せない

1
投稿者投稿内容
未記入
会議室デビュー日: 2008/05/21
投稿数: 1
投稿日時: 2008-05-21 12:33
VB6で開発したコンポーネントサービスを利用した3階層C/Sシステムを、
VB.NET言語にコンバートしています。
今回、コンポーネントサービスの代わりに、.NET リモーティングを
利用することとなりましたが、エラー処理について困っております。

サーバ側で発生した例外処理を、クライアント側にそのままエラーとして、
返すようにしているのですが、クライアント側で、ErrObjectを確認すると
Err.Numberに常に「5」が設定されており、サーバ側で設定されている値を
参照することができません。
リモーティングを利用しない呼び出しの場合は、問題なくErr.Numberが参照できます。

---------------------------------------------------------------------------
サンプルソース:

'クライアント側
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'コンフィグファイル読み込み
System.Runtime.Remoting.RemotingConfiguration.Configure(Process.GetCurrentProcess.MainModule.ModuleName.Replace(".vshost", "") & ".config", False)

End Sub

'リモーティングOFF
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim objServer As New Server.Class1

On Error GoTo ErrorHandler


objServer.Method1()
Exit Sub

ErrorHandler:

MessageBox.Show("Err.Number = " & Err.Number & ";" & _
"Err.Source = " & Err.Source & ";" & _
"Err.Description = " & Err.Description)

End Sub

'サーバ側
Public Class Class1
Inherits MarshalByRefObject

Public Sub Method1()

Err.Raise(-2147221269, "エラー", "エラーメッセージです。")

End Sub

End Class

※サーバ側、クライアント側のコンフィグファイル内には、以下の記述を入れています。
<customErrors mode="off"/>

---------------------------------------------------------------------------

Err.Discriptionは、正しく設定されていますので、
シリアライズの問題ではないのではないかと思っております。
非構造化例外処理は、リモーティングではサポートされないのでしょうか?
もし回避方法等ありましたら教えてください。

環境:Visual Studio 2008
.NET Framework 3.5
VB.NET 2008


1

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