2011-06-19 8 views
4

Silverlightアプリケーションを実行します。 IISでサイトをアップグレードすると、一部のユーザーは最新の更新プログラムを入手するためにブラウザの履歴をクリアする必要があります。Silverlight XAPファイルが更新されない

これはあなたが想像しているように愚かです。

彼らは、ユーザーのいくつかは、これを取得彼らのブラウザの履歴をクリアしていない場合は、

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C; .NET4.0E; BRI/2) 

Timestamp: Thu, 16 Jun 2011 02:41:49 UTC 

Message: Unhandled Error in Silverlight Application Unable to retrieve the module type Car.CarList.InitModule, Car.CarList, Version=1.0.123.17153 from the loaded assemblies. You may need to specify a more fully-qualified type name. at Microsoft.Practices.Composite.Modularity.ModuleInitializer.HandleModuleInitializationError(ModuleInfo moduleInfo, String assemblyName, Exception exception) 

UPDATE:私は問題を理解し始めています。 SilverlightアプリケーションのXAPファイルの最後の書き込みFILEDATEがMain.xapに追加された、シオマネキ出力で

/ClientBin/Main.xap?ignore-20/06/2011%209:30:19%20a.m. 
/ClientBin/CarList.xap 

を見て、ここで説明したようなファイル、

http://codeblog.larsholm.net/2010/02/avoid-incorrect-caching-of-silverlight-xap-file/

が、上記のエラー別のXAPファイルにあるCar.CarListモジュールに関連しています。

PRISMは2番目の 'モジュール'にCarList.xapを読み込ませるため、必要なクエリ文字列を追加する方法がわかりません。

+0

私はこれがFireFoxを使用しているために問題だと思います。 http://stackoverflow.com/questions/307709/how-do-you-force-firefox-to-not-cache-or-re-download-a-silverlight-xap-fileという質問が役立つかもしれません。 – Jehof

+0

私は上記の投稿を更新しました。この問題は、主なXAPファイルに適用された回避策に関連していますが、他のXAPファイルには適用されていません(PRISMを使用してXAPファイルをモジュール化しています)。 – peter

+0

IEを使用しているときにもこの問題が発生しますか? – Jehof

答えて

2

これは間違いなく解決しました。

マイモジュールカタログのロードはこのように見えた、

protected override IModuleCatalog GetModuleCatalog() 
{ 
    var CarListModule = new ModuleInfo() 
    { 
     ModuleName = "CarList", 
     ModuleType = "Car.CarList.InitModule, Car.CarList, Version=1.0.0.0", 
     Ref = "CarList.xap", 
     InitializationMode = InitializationMode.OnDemand, 
    }; 
    // blah 
} 

は私がXAPファイルをロードするためにそれを強制的にクエリ文字列は、このように各リリースごとに異なりますが、これに

protected override IModuleCatalog GetModuleCatalog() 
{ 
    var CarListModule = new ModuleInfo() 
    { 
     ModuleName = "CarList", 
     ModuleType = "Car.CarList.InitModule, Car.CarList, Version=1.0.0.0", 
     Ref = "CarList.xap?Version=1.0.0.0", 
     InitializationMode = InitializationMode.OnDemand, 
    }; 
    // blah 
} 

それを変更し、キャッシュされたバージョンは使用しないでください。

ビルドサーバーは、上記のテキストバージョン= 1.0.0.0を見つけて、実際のバージョン番号を置き換えます。これには、ModuleTypeテキストのバージョン番号が含まれます。ビルドサーバに対応させるために、実際のモジュールのバージョン番号も一致するように設定します。

+0

私は答えを受け入れる前にさらに24時間待たなければなりません。そうするでしょう。 – peter

+0

@Peter - クエリ文字列とアセンブリ内のすべての「ModuleType」のバージョン番号が一致しなければならないと仮定していますか? – ChrisF

+0

ModuleTypeのバージョン番号は、実際のアセンブリのバージョン番号と一致する必要があります。クエリ文字列のバージョン番号は、直接使用されないため一致する必要はありません。しかし、すべてのバージョン番号は同時に変更する必要があります。もっと理にかなっているので、私はそれらをすべて同じに保ちます。 – peter

関連する問題