5 Stimmen

ASP.NET Control-Sammlung serialisieren

Ich wurde damit beauftragt, eine bestehende ASP.NET-Site von der InProc-Sitzungsverwaltung auf die Verwendung des ASP.NET State Servers umzustellen.

Das bedeutet natürlich, dass alles, was in der Sitzung gespeichert wird, serialisierbar sein muss.

Eine der kompliziertesten Seiten in der Anwendung speichert derzeit eine Sammlung von ASP.NET-Steuerelementen in der Sitzung. Dies scheitert kläglich, weil die Steuerelemente nicht automatisch serialisiert werden können.

Kurz von völlig neu schreiben, wie die Seite funktioniert, um die Notwendigkeit für die Speicherung der Steuerelement-Sammlung in der Sitzung zu verhindern, hat jemand einen Trick/Lösung für die Herstellung der Sammlung serialisierbar?

7voto

Robert C. Barth Punkte 21461

Schreiben Sie die Seite neu. Sie werden sich später dafür bedanken. Es gibt sicher noch andere Probleme, wenn der ursprüngliche "Programmierer" (und ich verwende diesen Begriff hier sehr großzügig) dachte, es sei eine gute Idee, eine Kontrollhierarchie in einer Sitzung zu speichern.

2voto

erikkallen Punkte 32657

Speichern Sie keine Steuersammlungen im Sitzungsstatus. Tess hat eine Menge Artikel darüber, zum Beispiel diese .

0voto

Mark A Johnson Punkte 938

Die erste Antwort, die mir in den Sinn kommt, ist eine teilweise Neufassung (ich glaube nicht, dass es eine einfache Antwort darauf gibt). Wenn es sich um eine kleine Anzahl von Steuerelementtypen handelt, schreiben Sie Ihre eigenen Steuerelemente, die von diesen Steuerelementen erben und auch ISerializable implementieren. Ersetzen Sie dann mit Suchen und Ersetzen die Steuerelemente der Seite durch Ihre Versionen. Wenn Sie eine große Anzahl von Steuerelementtypen verwenden, verbringen Sie möglicherweise mehr Zeit damit, die Standardtypen zu erweitern, als mit dem Refactoring der Seite.

Die Arbeit wird in der Serialisierung und Deserialisierung der Steuerelemente sein, wenn Sie sie initialisieren, um sicherzustellen, dass Sie erfassen, was Sie brauchen (die TextBox Werte, die IsSelected, etc.).

Dies ist natürlich ein Hack, aber wenn Ihre Priorität nicht darin liegt, die Funktionalität dieser speziellen Seite neu zu schreiben, könnte dies für Sie funktionieren. Dann müssen Sie diese Lösung natürlich zu den "technischen Schulden" hinzufügen, die Ihre Anwendung anhäuft, um sicherzustellen, dass sie immer auf dem Radar von jemandem ist, der sie irgendwann überarbeiten muss.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X