- PR -

ノータッチデプロイメントで起動したWindowsフォームでXmlSerializerが使用できない

1
投稿者投稿内容
ひびの
会議室デビュー日: 2003/11/10
投稿数: 2
投稿日時: 2003-11-11 15:34
はじめまして。よろしくお願いします。

ASP.NETのWebシステムから、ノータッチデプロイメントで
Windowsフォーム(VB.NET2003)をイントラ内のクライアントPC上で
起動させるシステムを作成しています。

サーバに置かれたXMLファイル名を起動パラメータとして付加した
exeへのURLをASP側に配置し、
(http://server/test.exe?xml=TestConfig0001.xml)
クライアントで起動したアプリケーションは起動パラメータから
XMLファイル名を取得し、
このXMLの内容によってWindowsフォームの振る舞いを変えたいのですが、
パラメータ中に指定されたXMLファイル
(ASP.NET側で"TestConfig"クラスをXMLシリアライズして作成したもの)を
System.Xml.Serialization.XmlSerializerクラスのDeserializeメソッドで
オブジェクトに復元しようとすると
アプリケーション中でXmlSerializerを初期化する際に例外が発生します。


serializer = New XmlSerializer(GetType(TestConfig))
↓↓↓
System.Configuration.ConfigurationException: XMLファイル
http://server/test.exe?xml=TestConfig0001.xml.config 指定されたエンコードに
無効な文字があります。行1、位置3です。の読み込みに失敗しました。


ノータッチデプロイメントではなく、普通にクライアント上でexeを起動すれば
初期化時も例外は発生せず、デシリアライズも上手くいきます。
また、ノータッチデプロイメントで起動する場合も、パラメータが無ければ
(http://server/test.exe)デシリアライズ出来ます。

XmlSerializerのコンストラクタ中で"http://server/test.exe.config"というファイルを
読むのが正しい挙動のようですが、何故ノータッチデプロイメント上では
こうした挙動になるのでしょうか?


[ メッセージ編集済み 編集者: ひびの 編集日時 2003-11-11 16:59 ]
soramimi
会議室デビュー日: 2003/10/29
投稿数: 19
投稿日時: 2003-11-12 12:58
引用:

XmlSerializerのコンストラクタ中で"http://server/test.exe.config"というファイルを
読むのが正しい挙動のようですが、何故ノータッチデプロイメント上では
こうした挙動になるのでしょうか?


以前この会議室で紹介されていたURLが参考になると思います。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnforms/html/winforms05152003.asp

Server-Side Support for NTD Arguments 以降に理由と対策が記述されています。
ひびの
会議室デビュー日: 2003/11/10
投稿数: 2
投稿日時: 2003-11-13 12:58
ひびのです。
ご返事ありがとうございます。

上記のサイトにあった説明通りに
ASP.NETのweb.configとIISの設定を行ったところ
ちゃんとXmlSerializerが使えるようになりました。

これからもっとじっくり読んでみようと思います・・・
ありがとうございました。
1

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