我没有从asp.net论坛得到任何回复,所以我想我会在这里尝试。运行aspnet_regsql时幕后会发生什么?
我遇到了一个客户的问题,他们在登录我们的应用程序时遇到了麻烦,他们正在托管。它在第一天安装我们的应用程序后的第一天左右工作正常,但随后第二天(2009年5月29日)验证中断。然后他们说它在星期一开始工作,但只有几个小时。没有配置更改或他们知道的数据库更改。
我们可以通过运行带有下面参数的aspnet_regsql命令来解决这个问题。我们已经验证所有的“aspnet_”表和存储过程都在数据库中。我的问题是,与我们的应用程序断开连接,数据库的身份验证失败,但在运行此脚本之后已修复此问题?该命令不会覆盖任何“aspnet_”表,因为所有现有用户仍在数据库中,并且他们能够再次使用相同的现有凭证登录。
aspnet_regsql -E -S <SERVERNAME> -d <DATABASENAME> -A all
我们的应用程序的一点背景。这是一个.NET 3.5 SP1 ASP.NET应用程序,使用成员资格提供程序进行身份验证。我已经在我们的数据库中安装了会员功能(我现在很后悔)。该应用程序对ADO.NET连接和成员资格连接都使用SQL Server登录。此当前设置将登录权限设置为此数据库的db_owner。
下面的条目正在进入Windows事件日志。
Event Type: Information
Event Source: ASP.NET 2.0.50727.0
Event Category: Web Event
Event ID: 1315
Date: 5/29/2009
Time: 10:52:04 AM
User: N/A
Computer: * * * * * *
Description:
Event code: 4005
Event message: Forms authentication failed for the request. Reason:
The ticket supplied has expired.
Event time: 5/29/2009 10:52:04 AM
Event time (UTC): 5/29/2009 2:52:04 PM
Event ID: 5ca57075c5464bdfbee4dbaa1365f8d9
Event sequence: 2
Event occurrence: 1
Event detail code: 50202
Application information:
Application domain:
/LM/W3SVC/1/Root/5500Client-1-128880823233521436
Trust level: Full
Application Virtual Path: /5500Client
Application Path: D:\www\5500Client\
Machine name: * * * * * *
啊,所以你的意思是,表中得到一个不同的架构,Windows用户帐户,而不是DBO帐户下创建的。 – 2009-06-10 13:01:49