mosi_asgari
شنبه 02 دی 1385, 08:49 صبح
سلام به همه دوستان
بچه ها من یه وب سایت با ASP.NET 2.0 طراحی و پیاده سازی کرده ام و وب سایت رو روی Host فرستاده ام. مشکل من با Membership پیش فرض ASP.NTE است.
توی Host , برای دسترسی به Database یک login دارم به نام : monila_dblogin و یک رمز عبور که برای دسترسی به دیتابیس استفاده می شود. یعنی جدول های
من همچین شکلی دارند:
monila_dblogin.TableName
مشکل اینجاست که Membership پیش فرض ASP.NET برای دسترسی به جدول های Membership از الگویی مثل الگوی زیر استفاده می کنه :
dbo.TableName OR dbo.StoredProcedureName
برای حل این مشکل من Source Code سیستم Membership رو از Microsoft دانلود کردم از آدرس زیر:
http://download.microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-
33bacfcc8e98/ProviderToolkitSamples.msi
بعد تمام قسمت هایی که از dbo استفاده می کرد رو به monila_dblogin تغییر دادم و پروژه رو کامپایل کردم و از طریق web.config به ASP.NET گفتم که باید از این
dll استفاده کنی ( dll من در فلدر BIN قرار دارد ) مثل قسمت زیر :
<membership defaultProvider="ELearningCenter_MembershipProvider">
<providers>
<add connectionStringName="ELearningCenterConnectionString"
applicationName="/"
enablePasswordRetrieval="true" enablePasswordReset="true"
requiresQuestionAndAnswer="false" requiresUniqueEmail="true"
passwordFormat="Encrypted" maxInvalidPasswordAttempts="5"
passwordAttemptWindow="10" minRequiredPasswordLength="5"
minRequiredNonalphanumericCharacters="0"
name="ELearningCenter_MembershipProvider"
type="Microsoft.Samples.SqlMembershipProvider,ProviderTo olkitSampleProviders,Version=1.0.0.
0, Culture=neutral, PublicKeyToken=null" />
</providers>
</membership>
<roleManager defaultProvider="ELearningCenter_RoleProvider" enabled="true"
cacheRolesInCookie="true" cookieName="ELearningCenterRoles">
<providers>
<add connectionStringName="ELearningCenterConnectionString"
applicationName="/"
name="ELearningCenter_RoleProvider"
type="Microsoft.Samples.SqlRoleProvider,ProviderToolkitS ampleProviders,Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null" />
</providers>
</roleManager>
<profile defaultProvider="ELearningCenter_ProfileProvider">
<providers>
<add name="ELearningCenter_ProfileProvider"
connectionStringName="ELearningCenterConnectionString"
applicationName="/"
type="Microsoft.Samples.SqlProfileProvider,ProviderToolk itSampleProviders,Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null" />
</providers>
<properties>
<add name="FirstName" type="String"/>
<add name="LastName" type="String"/>
<add name="Website" type="String"/>
<group name="Preferences">
<add name="Theme" type="String"/>
<add name="Newsletter"
type="Newsletters.BusinessLogicLayer.SubscriptionType"/>
</group>
<group name="Forum">
<add name="Posts" type="Int32" />
<add name="AvatarUrl" type="String" />
<add name="Signature" type="String" />
</group>
</properties>
</profile>
مشکل اولی حل شد ولی مشکلات بعدی پیدا شد. من تونستم کاربر جدید در سایت بسازم یا کاربر را حذف کنم اما وقتی که می خواهم Profile کاربر را نمایش بدم خطا Security
Exception رخ می ده. در ضمن من فقط dbo رو به monila_dblogin تغییر دادم و تغییر دیگه ای توی Source Code نداده ام. وقتی هم که
debug=true قرار می دهم از کد های برنامه خطا نمی گیره و فقط می گه شما مجاز به انجام چنین کاری نیستید. در ضمن Windows Server , هاست از Medium Trust
Level استفاده می کنه.
کسی می تونه کمکی کنه ؟ کسی با این مشکل برخورده ؟ به نظر من سیستم Membeship پیش فرض غیر قابل استفاده است.
بچه ها من یه وب سایت با ASP.NET 2.0 طراحی و پیاده سازی کرده ام و وب سایت رو روی Host فرستاده ام. مشکل من با Membership پیش فرض ASP.NTE است.
توی Host , برای دسترسی به Database یک login دارم به نام : monila_dblogin و یک رمز عبور که برای دسترسی به دیتابیس استفاده می شود. یعنی جدول های
من همچین شکلی دارند:
monila_dblogin.TableName
مشکل اینجاست که Membership پیش فرض ASP.NET برای دسترسی به جدول های Membership از الگویی مثل الگوی زیر استفاده می کنه :
dbo.TableName OR dbo.StoredProcedureName
برای حل این مشکل من Source Code سیستم Membership رو از Microsoft دانلود کردم از آدرس زیر:
http://download.microsoft.com/download/a/b/3/ab3c284b-dc9a-473d-b7e3-
33bacfcc8e98/ProviderToolkitSamples.msi
بعد تمام قسمت هایی که از dbo استفاده می کرد رو به monila_dblogin تغییر دادم و پروژه رو کامپایل کردم و از طریق web.config به ASP.NET گفتم که باید از این
dll استفاده کنی ( dll من در فلدر BIN قرار دارد ) مثل قسمت زیر :
<membership defaultProvider="ELearningCenter_MembershipProvider">
<providers>
<add connectionStringName="ELearningCenterConnectionString"
applicationName="/"
enablePasswordRetrieval="true" enablePasswordReset="true"
requiresQuestionAndAnswer="false" requiresUniqueEmail="true"
passwordFormat="Encrypted" maxInvalidPasswordAttempts="5"
passwordAttemptWindow="10" minRequiredPasswordLength="5"
minRequiredNonalphanumericCharacters="0"
name="ELearningCenter_MembershipProvider"
type="Microsoft.Samples.SqlMembershipProvider,ProviderTo olkitSampleProviders,Version=1.0.0.
0, Culture=neutral, PublicKeyToken=null" />
</providers>
</membership>
<roleManager defaultProvider="ELearningCenter_RoleProvider" enabled="true"
cacheRolesInCookie="true" cookieName="ELearningCenterRoles">
<providers>
<add connectionStringName="ELearningCenterConnectionString"
applicationName="/"
name="ELearningCenter_RoleProvider"
type="Microsoft.Samples.SqlRoleProvider,ProviderToolkitS ampleProviders,Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null" />
</providers>
</roleManager>
<profile defaultProvider="ELearningCenter_ProfileProvider">
<providers>
<add name="ELearningCenter_ProfileProvider"
connectionStringName="ELearningCenterConnectionString"
applicationName="/"
type="Microsoft.Samples.SqlProfileProvider,ProviderToolk itSampleProviders,Version=1.0.0.0,
Culture=neutral, PublicKeyToken=null" />
</providers>
<properties>
<add name="FirstName" type="String"/>
<add name="LastName" type="String"/>
<add name="Website" type="String"/>
<group name="Preferences">
<add name="Theme" type="String"/>
<add name="Newsletter"
type="Newsletters.BusinessLogicLayer.SubscriptionType"/>
</group>
<group name="Forum">
<add name="Posts" type="Int32" />
<add name="AvatarUrl" type="String" />
<add name="Signature" type="String" />
</group>
</properties>
</profile>
مشکل اولی حل شد ولی مشکلات بعدی پیدا شد. من تونستم کاربر جدید در سایت بسازم یا کاربر را حذف کنم اما وقتی که می خواهم Profile کاربر را نمایش بدم خطا Security
Exception رخ می ده. در ضمن من فقط dbo رو به monila_dblogin تغییر دادم و تغییر دیگه ای توی Source Code نداده ام. وقتی هم که
debug=true قرار می دهم از کد های برنامه خطا نمی گیره و فقط می گه شما مجاز به انجام چنین کاری نیستید. در ضمن Windows Server , هاست از Medium Trust
Level استفاده می کنه.
کسی می تونه کمکی کنه ؟ کسی با این مشکل برخورده ؟ به نظر من سیستم Membeship پیش فرض غیر قابل استفاده است.