0

以前はWeb展開プロジェクトを介して展開されていたASP.NET2.0Webフォームアプリがあります。最近、TFS / MSBuildによってビルドされた新しいバージョンをデプロイしましたが、この変更により、カスタムプロファイルオブジェクトの逆シリアル化に問題が発生したようです。

これがweb.configのprofile/propertiesセクションのエントリです。

<add name="MyKey" type="OurApp.UserData" serializeAs="Binary" />

これは、ビルドプロセスの結果として変更されておらず、OurApp.UserDataも変更されていません。

ただし、アプリが特定のユーザーのデータを読み取ろうとしても、何も見つかりません。

明らかな違いの1つは、Web展開バージョンでは、Webサイト用に単一のOurApp.dllが作成されたのに対し、新しいバージョンは複数の「名前が壊れた」アセンブリで構成されていることです。これにより、プロファイルがOurApp.UserDataタイプに格納されているプロパティの読み取りを見逃す可能性がありますか?

4

1 に答える 1

0

答えは実際にはアセンブリ名であることが判明しました。ビルドプロセスにaspnet_mergeステップを追加し、古い名前のアセンブリを生成した後、すべてが順調でした。

おそらくこれは、プロファイルのシリアル化ルーチンが、オブジェクトを表すバイナリデータに完全修飾クラス名を埋め込んだことを示しています。

于 2011-04-20T13:24:49.640 に答える