在我们的生产环境中重置密码时,我们遇到了“iDesign Credentials Manager”MVC应用程序的问题。它抛出的错误是
System.ServiceModel.CommunicationObjectFaultedException:The 通信对象,System.ServiceModel.Channels.ServiceChannel, 不能用于通信,因为它处于Faulted状态。
因为这是一个普遍的错误,并且没有描述.net会员集会内部真正发生的事情,我开始在代码之外寻找。
生产环境是SQL Server 2k5,Dev环境是SQL Server 2k8。我从生产中删除了代码,将CredentialsManager.ConnectionStrings.config文件中的连接字符串更改为指向我们的开发人员数据库,应用程序的工作方式和代码库的开发版本一样。
当我们尝试密码重置连接时,我聘请了DBA在SQL数据库上运行探查器。这是他的评论
我在prod中看到的最后一件事是exec dbo.aspnet_Membership_GetUserByName,之后什么都没有。在DEV中, 在执行那个之后,我看到它执行了 dbo.aspnet_Membership_GetPasswordWithFormat然后 dbo.aspnet_Membership_ResetPassword然后执行 dbo.sapnet_Membership_GetUserByName然后再似乎是 成功重置结束。**
他们正在使用SSL证书,但DBA已验证Cert在生产数据库上未过期。
有人有任何想法吗?
以下是CredentialsManager.Membership.config的内容,对于我们当前设置的两个应用程序,Allow reset为true。
<membership
userIsOnlineTimeWindow="15"
defaultProvider="DTCSQLMembershipProvider">
<providers>
<clear/>
<add
name="DTCSQLMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="AspNetDbConnectionString"
applicationName="/DTCWebService"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
passwordFormat="Hashed"
minRequiredPasswordLength="40"
minRequiredNonalphanumericCharacters="10" />
<add
name="QRSQLMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="AspNetDbConnectionString"
applicationName="/QRWebService"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="false"
passwordFormat="Hashed"
minRequiredPasswordLength="40"
minRequiredNonalphanumericCharacters="10" />
</providers>
</membership>