2009-06-10 3 views
0

Ich habe eine kleine Struktur, die ich in meinem ViewState serialisieren möchte. Es sieht etwa so aus:Probleme beim Serialisieren eines benutzerdefinierten Typs in ASP.NET ViewState

[Serializable] 
private struct DayMoney 
{ 
    public readonly DateTime ValidFrom; 
    public readonly string CurrencyCode; 
    public readonly double Amount; 
} 

es serialisiert ganz gut, aber wenn ich einen Postback/Rückruf durchzuführen, erhalte ich eine Ausnahme für Deserialisieren es. Verpackt in einer langen Liste von Innerexception ist die Ursache zu sein scheint:

Unable Montage finden 'BussinessTripModule, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null'.

Das ist irgendwie lächerlich, weil diese Assembly definitiv in der aktuellen AppDomain geladen ist.

WTF?

Antwort

2

Diese Art von Problemen ist sehr schwer zu diagnostizieren.

Mein Vorschlag ist, die Fusion Log Viewer zu verwenden, um zu diagnostizieren, warum Ihre bestimmte Assembly nicht gefunden wird. Denken Sie daran, dass einige spezielle Optionen von Fuslogvw, die nicht so einfach einzurichten sind, glücklicherweise Google viel helfen können.

Aber, um zu beginnen ... machen Sie Ihre Struktur öffentlich, wie jemand anderes gesagt hat !!!

+0

Es öffentlich zu machen hilft nicht. Der Fusion Log Viewer sieht vielversprechend aus, aber wie benutzt man ihn? Der MSDN Artikel ist nicht sehr hilfreich ... –

+0

Ahh, fand es. Musste einen anderen Pfad in meinem Element hinzufügen. Seltsam noch, wie es definitiv in der aktuellen AppDomain geladen wurde - warum müsste es noch einige Wege suchen? –

1

Ihre Struktur ist privat. Deserialisierung findet im Framework selbst statt, nicht in Ihrer Assembly. Es ist wahrscheinlich das ist das Problem, machen Sie es öffentlich und sehen, ob das es löst

+0

Nop, das löst es überhaupt nicht. Außerdem - wie könnte das etwas beeinflussen, wenn das Framework die Assembly als solche nicht finden kann? –

+1

Nun, ich habe vage gehofft, dass es eine schlechte Fehlermeldung sein könnte und dass es die Assembly gefunden hat, aber nicht auf die Klasse zugreifen konnte. Manchmal MS Fehlermeldungen suck :) – blowdart