2006年10月30日

.Net Remotingで CAO

   このエントリーをはてなブックマークに追加 Clip to Evernote
.Net Remotingで CAO(Client Activate Object) を利用したいのだが、IISでホストすることはできないのかな?
調べたけれど、.configファイルの書き方が良くわからない。
SingletonやSingleCallはOKなのでが、CAOはやはりだめなんだろうか。
ステートレスが前提のHTTPプロトコルで、ステートフルの処理をやろうというのが、そもそもの間違いのような気もするが...  

Posted by gushwell at 21:29Comments(5)TrackBack(0)

2006年10月16日

.NET リモーティングオブジェクトをWindowsServiceでホストする方法

   このエントリーをはてなブックマークに追加 Clip to Evernote
.NET リモーティングオブジェクトをWindowsServiceでホストする方法は、WindowsServiceの作り方を知っていれば、とても簡単だ。

 protected override void OnStart(string[] args) {
RemotingConfiguration.Configure(
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile,false);
}

と書くだけだ。
でも、サービスでリモート オブジェクトをホストする方法には、

サービスの構成ファイルのフルパスをサービスのプロパティ [開始パラメータ] ボックスに入力し、

RemotingConfiguration.Configure(args[0]);

と書くように説明している。
構成ファイルを自由に置き換えることが可能だけれど、普通は、そういった要求はほとんどないと思う。
やはり、前者の方法で十分だと思う。

ところで、.NET Framework2.0になって、Configureメソッドも書き方が変更になっていますね。
  
Posted by gushwell at 21:12Comments(0)TrackBack(0)

2006年09月27日

.NETリモーティングのリースタイム

   このエントリーをはてなブックマークに追加 Clip to Evernote
.NETリモーティングにおいて、もし、
RemotingConfiguration.Configure(configPath,false);
として、構成ファイルの情報を利用しているのならば、
リースタイムについても、構成ファイルで指定可能。

<system.runtime.remoting>
<application>
<lifetime
leaseTime="10M"
sponsorshipTimeOut="2S"
renewOnCallTime="5M"
leaseManagerPollTime="10S"
/>
</application>
</system.runtime.remoting>

みたいにかけば、以下のようなコードを書く必要はない。

LifetimeServices.LeaseTime = TimeSpan.FromMinuts(5);
LifetimeServices.SponsorshipTimeout = TimeSpan.FromSeconds(2);
LifetimeServices.RenewOnCallTime = TimeSpan.FromMinuts(5);
LifetimeServices.LeaseManagerPollTime = TimeSpan.FromSeconds(10);
  
Posted by gushwell at 22:22Comments(0)TrackBack(0)

2006年06月09日

有効な BinaryHeader が含まれていません

   このエントリーをはてなブックマークに追加 Clip to Evernote
Message="バイナリ ストリーム '140' に、有効な BinaryHeader が含まれていません。シリアル化と逆シリアル化の途中で、無効なストリームまたはオブジェクトのバージョン変更が発生した可能性があります。"

.NETリモーティングで、クライアント側に用意する App.Config の wellknown タグに記述する サービスのURLが間違っているとこのエラーが出る場合がある。
このエラーメッセージから、URLに間違いがあるっていうのはなかなか気がつきません。
IIS側の設定をいろいろと見直していました。まさか、URL だったとは...
どうも最近この手のミスが多い。疲れてるのかな。

ちなみに、僕が間違ったのは、サーバー名のところ。URLの別の部分を間違えると、また違うエラーになる。
  
Posted by gushwell at 20:20Comments(0)TrackBack(0)

2006年05月11日

入力ストリームは有効なバイナリ形式ではありません

   このエントリーをはてなブックマークに追加 Clip to Evernote
昨日、HTTPチャネル・バイナリフォーマットを使った .NET Remotingのプログラムを作成し、実行したところ、

"入力ストリームは有効なバイナリ形式ではありません"

のメッセージがでて、実行できない。

バイナリフォーマットを指定しなければ、問題なく動くので、シリアライズ周りで何か問題が発生していそう。
IISの管理コンソールを見たら、ASP.NETのバージョンが異なることに気がつく。
なるほど、.NET Frameworkのバージョンが異なるので、シリアライズーでシリアライズの整合性が取れていないようだ。

でも、ASP.NETのバージョンを 2.0.50727 に変更してもうまくいかない。
PCを再起動しても駄目。
結局昨日は、原因が分からず、そのままにして帰宅。

で、今日、再度動かしたら、何の問題もなく動作した。
プログラムも、configファイルも何も変更していないのに...

仮想ディレクトリを作成し直したからかな?  
Posted by gushwell at 20:21Comments(2)TrackBack(0)