0

We are having an issue with the 'iDesign Credentials Manager' MVC Application when resetting passwords in our production environment. The error it throws is

System.ServiceModel.CommunicationObjectFaultedException: The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.

as this is a general error and non descriptive as to what really happened deep in the bowels of the .net membership assembly I began looking outside the code.

The production environment is SQL Server 2k5 and the Dev environment that is SQL Server 2k8. I pulled the code down from production changed the connection string in the CredentialsManager.ConnectionStrings.config file to point to our dev databases and the application works as it should as does the development version of the code base.

I engaged a DBA to run the profiler on the SQL database while we attempted a password reset connection. This was his comment

the last thing I see happening in prod is exec dbo.aspnet_Membership_GetUserByName, then nothing after that. In DEV, after it executes that one, I see it execute dbo.aspnet_Membership_GetPasswordWithFormat and then dbo.aspnet_Membership_ResetPassword and then it executes dbo.sapnet_Membership_GetUserByName again then that seems to be the end of the successful reset.**

They are using SSL Cert but the DBA verified the Cert was not expired on the production DB.

Anyone have any thoughts?

Here is the contents of the CredentialsManager.Membership.config the Allow reset is true for both applications we currently have set up.

    <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>
Tim
  • 1,217
  • 5
  • 26
  • 51
  • 1
    The daft wcf error is probably because of a close or dispose on a client proxy after the exception has occurred. If you use one of these workarounds, you should get the real error (unless it is shielded on the server) http://stackoverflow.com/questions/573872/what-is-the-best-workaround-for-the-wcf-client-using-block-issue – StuartLC Apr 13 '12 at 14:20
  • thanks nonnb I'll look into making the changes. I can confirm that the app is currently coded using the try...catch...abort method as MS recommends. – Tim Apr 13 '12 at 22:26

0 Answers0