2010年5月8日 星期六

ASPNETDB 無法連線(Login控制項、MemberShip) 續章,原來是中文Cookie名稱的問題!

前次提到「VS 2008 的「網站專案」與「Web應用程式」專案(新網站,新增專案)」,經將Web應用程式發布到 IIS 上之後,又發生另一怪事,登入控制項(Login)輸入、連線都沒有錯誤訊息,可是卻都無法順利登入。


(1)以 WebForm 開發,利用VS2008內建的網站,在 VS上可以正常執行,可以登入,並且導向指定的網頁。
追蹤 SQL Profiler ,有下面五行執行

exec dbo.aspnet_CheckSchemaVersion @Feature = N'Common', @CompatibleSchemaVersion = N'1'
exec dbo.aspnet_CheckSchemaVersion @Feature = N'Membership', @CompatibleSchemaVersion = N'1'
exec dbo.aspnet_Membership_GetPasswordWithFormat @ApplicationName = N'UserLogin', @UserName = N'xxxxxxx',
@UpdateLastLoginActivityDate = 1, @CurrentTimeUtc = '05 7 2010 2:45:09:890PM'
exec sp_reset_connection
exec aspnet_UsersInRoles_GetRolesForUser @ApplicationName = N'UserLogin', @UserName = N'xxxxxxx'

可是將WebServer改用IIS 就會跟下面描述的情況一樣,登入失效,但沒有錯誤訊息。

(2)以 網站模式開發,網站在 XP+IIS 5,或 2003+IIS 6,登入都沒有錯誤訊息,追蹤 SQL Profiler
只有這一行:
exec dbo.aspnet_Membership_GetPasswordWithFormat @ApplicationName = N'UserLogin', @UserName = N'xxxxxxx',
@UpdateLastLoginActivityDate = 1, @CurrentTimeUtc = '05 7 2010 2:41:15:093PM'

所以這不是連線的問題,而且 在 XP+IIS5 與 2003 + IIS6 皆有相同問題,


感謝 SteveT 大大的幫忙 ,最後找到是 Web.Config 中設定問題,只要將下列 name="首頁" 取消就恢復正常了 (Cookie名稱不能用中文啦!)

<authentication mode="Forms">

<forms name="首頁" loginUrl="Default.aspx" cookieless="UseCookies"/>
</authentication>

沒有留言:

張貼留言