ピースペース

SilverlightビジネスアプリケーションのDLLを分割する

with one comment

VS2010でSilverlightビジネスアプリケーションを作成すると
ログイン機能が完備した立派なスケルトンができあがる
今回のプロジェクトはちょっとした規模になりそうなのでxapをいくつかに分割(分担)して開発したいと考えている
分割した一方のSilverlightはメインのSilverlightから参照する
ここで問題が発生する
この場合、両方のSilverlightを同じDomainServiceにリンクすることはできない
が、両方のSilverlightでWebContext.Current.Authentication.LoadUserしたい!
それはできないことなのか??

Viewを実装する複数のアセンブリでDomainContextクラスを共有する。という作戦
DomainContextクラス(RIA Servicesのクライアントコードの吐出し先)を追加したクラスライブラリ側へ移動して
実行してみる
と、WebContext.Current.Authentication.LoadUserでエラーが発生する

DomainContextType が null または無効で、AuthenticationBase<T> から生成されたコンテキストはありません
WH~Y?
分割前の元のコードと比べてみるも何が問題か?さっぱりわからない

Mainアセンブリの初期化コードをつぎのように変更する

WebContext webContext = new WebContext();
var formsAuthentication = new FormsAuthentication();
// DomainContextを明示的に指定する必要あり
formsAuthentication.DomainContext = new SH.Introduction.Web.AuthenticationContext();
webContext.Authentication = formsAuthentication;

new FormsAuthentication()するときに
AuthenticationContextがMainアセンブリに存在する場合は
FormsAuthentication.DomainContextに自動的にそれが生成される
ということらしい
って、わからんやろっ んなこと ぷんぷん

そもそも、WebContextがどこでAutheticationServiceと結びつくのか?が謎だった
が、やっと納得できたような気がする
解決したのでヨシ!とする

まとめ
RIA ServiceへのリンクはSilverlightアプリケーションから直接行わない
クラスライブラリを追加してDomainContextクラスはそこへ移動する

Written by nasu38yen

2011年1月11日 @ 10:01 PM

カテゴリー: 未分類

コメント / トラックバック1件

Subscribe to comments with RSS.

  1. ありがとうございます。お陰様で解決しました

    かっとし

    2011年12月13日 at 6:45 PM


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。