2009-05-20 4 views
0


Entfernen existierendes Profil Anbieter

Q1 Buch legt nahe, dass, bevor wir neue registrieren SqlProfileProvider, sollten wir alle vorhandenen Profil-Provider mit <clear> Element entfernen. Aber:

A) Warum müssen wir <clear> anstelle von <remove> verwenden?

B) Ich nehme an, root web.config oder machine.config nicht (Standard) jedes Profil Provider registrieren und somit <clear> Element verwendet, ist nicht notwendig?


Q2 ich Grund annehmen, warum jede Profileigenschaft nicht eine entsprechende Spalte in einer Datenbanktabelle hat (statt alle Eigenschaften in ein einziges Feld gespeichert werden) ist aufgrund der Tatsache, jedes Mal, wenn wir hinzufügen würden und entfernen Profileigenschaften, müssten wir auch Tabellenschema ändern?


thanx

Antwort

2

Tatsächlich wird die AspNetSqlProfileProvider (vom Typ System.Web.Profile.SqlProfileProvider) in machine.config standardmäßig hinzugefügt. Werfen Sie einen Blick auf Ihr Verzeichnis C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG (oder an einem anderen Ort). Allerdings ist es dort nicht als Standardanbieter registriert. Also, wenn Sie mit dem default settings zufrieden sind, ist es ausreichend, die folgende Konfiguration verwenden:

<profile enabled="true" defaultProvider="AspNetSqlProfileProvider" /> 

Wenn Sie einen benutzerdefinierten Anbieter verwenden möchten, ist es in der Regel eine gute Idee, alle vorhandenen Provider löschen (wenn auch nicht notwendig) und Benennen Sie einen anderen Standardanbieter.

Der Grund für die Verwendung remove ist, dass es ein name Attribut erfordert, das Sie möglicherweise nicht kennen. Mit clear werden alle zuvor registrierten Profilanbieter entfernt. Mit remove wird nur eine nach Name entfernt.

In Bezug auf Q2 sind Sie richtig. Das Datenbankschema, das verwendet wird, muss allgemein genug sein, um viele verschiedene Eigenschaften (und Typen von Eigenschaften) aufzunehmen.

+0

A) Wenn bereits ein SqlProfileProvider-Provider in machine.config definiert ist, warum konnte ich dann Provider I im Stammverzeichnis web.config der Anwendung verwenden, obwohl ich nicht verwendet habe, um den bestehenden Provider zu entfernen? Sollte das nicht zu einem Fehler führen? B) Ich nehme an, entfernt alle Elemente, während nur ein bestimmtes Element entfernt? C) Vielleicht eine blöde Frage - beim Entfernen von SqlMembershipProvider oder SqlRoleProvider verwendete mein Buch immer , aber mit SqlProfileProvider es stattdessen verwendet. Ein besonderer Grund dafür? – SourceC

+1

(a) Wenn Sie ihm einen anderen Namen gegeben hätten, können Sie so viele Anbieter hinzufügen, wie Sie möchten, entweder vom gleichen oder vom anderen Typ. (b) Ja, das ist richtig. (c) Keine Ahnung - welches Buch verwendest du? Ich würde immer dazu neigen, mit < clear/> auch zu gehen, weil Sie wissen, dass Sie sie alle haben. Vielleicht zeigte der Autor nur eine andere Art, es zu tun. –

+1

Ich fügte meiner Antwort einige weitere Informationen hinzu, die mit den Informationen von Zhaph - Ben Duguid übereinstimmen. –