2010-04-27 4 views
1

Je reçois l'erreur ci-dessus dans IIS 6.0 maintenant lorsque je parcours mon application Web C#/SQL. Cela a été construit dans VS 2008 et SS 2008 sur un système d'exploitation XP 32 bits. L'application fonctionnait avant d'ajouter des contrôles de connexion. Cependant, c'est la première fois que je configure les contrôles de connexion/mot de passe, il me manque probablement quelque chose de vraiment basique.Erreur de configuration Format de mot de passe ASP.NET spécifié non valide

Cette erreur ne se produit pas avant que j'essaie de me connecter. Voici les détails de mon erreur d'IIS; Je reçois la même erreur dans VS:

Parser Error Message: Password format specified is invalid. 

Source Error: 


Line 31:     <add 
Line 32:     name="SqlProvider" 
Line 33:     type="System.Web.Security.SqlMembershipProvider" 
Line 34:     connectionStringName="AdventureWorksConnectionString2" 
Line 35:     applicationName="AddFileToSQL2" 


Source File: C:\Inetpub\AddFileToSQL2\web.config Line: 33 

Et le contenu pertinent de mon web.config sont:

<connectionStrings> 
    <add name="Master" connectionString="server=MSSQLSERVER;database=Master; Integrated Security=SSPI" 
     providerName="System.Data.SqlClient" /> 
    <add name="AdventureWorksConnectionString" connectionString="Data Source=SIDEKICK;Initial Catalog=AdventureWorks;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
     <add name="AdventureWorksConnectionString2" connectionString="Data Source=SIDEKICK;Initial Catalog=AdventureWorks;Integrated Security=True; " 
    providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
     <system.web> 

      <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15"> 
       <providers> 
        <clear /> 
        <add 
        name="SqlProvider" 
        type="System.Web.Security.SqlMembershipProvider" 
        connectionStringName="AdventureWorksConnectionString2" 
        applicationName="AddFileToSQL2" 
        enablePasswordRetrieval="false" 
        enablePasswordReset="true" 
        requiresQuestionAndAnswer="true" 
        requiresUniqueEmail="false" 
        passwordFormat="encrypted" /> 
       </providers> 
      </membership> 
      <!-- 
      Set compilation debug="true" to insert debugging 
      symbols into the compiled page. Because this 
      affects performance, set this value to true only 
      during development. 
     --> 
     <roleManager enabled="true" /> 
    <compilation debug="true"> 
      <assemblies> 
       <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
       <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
       <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
       <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
      </assemblies> 
     </compilation> 
     <!-- 
      The <authentication> section enables configuration 
      of the security authentication mode used by 
      ASP.NET to identify an incoming user. 
     --> 
      <authentication mode="Forms"> 
       <forms loginUrl="Password.aspx" 
        protection="All" 
        timeout="30" 
        name="SqlAuthCookie" 
        path="/FormsAuth" 
        requireSSL="false" 
        slidingExpiration="true" 
        defaultUrl="default.aspx" 
        cookieless="UseCookies" 
        enableCrossAppRedirects="false" /> 
      </authentication> 

      <!--Authorization permits only authenticated users to access the application --> 
      <authorization> 
       <deny users="?" /> 
       <allow users="*" /> 
      </authorization> 

      <!-- 
      The <customErrors> section enables configuration 
      of what to do if/when an unhandled error occurs 
      during the execution of a request. Specifically, 
      it enables developers to configure html error pages 
      to be displayed in place of a error stack trace. 

     <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> 
      <error statusCode="403" redirect="NoAccess.htm" /> 
      <error statusCode="404" redirect="FileNotFound.htm" /> 
     </customErrors> 
     --> 
     <pages> 
      <controls> 
       <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
       <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      </controls> 
     </pages> 
     <httpHandlers> 
      <remove verb="*" path="*.asmx"/> 
      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> 
    </httpHandlers> 
     <httpModules> 
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     </httpModules> 
    </system.web> 

    <system.codedom> 
     <compilers> 
      <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
       <providerOption name="CompilerVersion" value="v3.5"/> 
       <providerOption name="WarnAsError" value="false"/> 
      </compiler> 
     </compilers> 
    </system.codedom> 
    <!-- 
     The system.webServer section is required for running ASP.NET AJAX under Internet 
     Information Services 7.0. It is not necessary for previous version of IIS. 
    --> 
    <system.webServer> 
     <validation validateIntegratedModeConfiguration="false"/> 
     <modules> 
      <remove name="ScriptModule"/> 
      <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     </modules> 
     <handlers> 
      <remove name="WebServiceHandlerFactory-Integrated"/> 
      <remove name="ScriptHandlerFactory"/> 
      <remove name="ScriptHandlerFactoryAppServices"/> 
      <remove name="ScriptResource"/> 
      <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
      <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
     </handlers> 
    </system.webServer> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
      <dependentAssembly> 
       <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/> 
       <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> 
      </dependentAssembly> 
      <dependentAssembly> 
       <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/> 
       <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/> 
      </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
     <system.net> 
      <mailSettings> 
       <smtp from="[email protected]"> 
        <network host="SIDEKICK" password="" userName="" /> 
       </smtp> 
      </mailSettings> 
     </system.net> 
</configuration> 

J'ai vérifié et j'ai une base de données aspnetdb dans mes SSMS. Le compte de service réseau dispose d'un accès SELECT, EXECUTE, INSERT, UPDATE à cette base de données. Mais un problème que je vois est que toutes les tables dans cette base de données sont vides à l'exception de aspnet_SchemaVersions, qui a seulement 2 enregistrements (commun et adhésion). Est-ce correct?

J'ai ajouté des utilisateurs et des rôles via l'assistant de configuration ASP.NET, et je crois que je l'ai configuré correctement depuis que j'ai suivi le tutoriel Microsoft au http://msdn.microsoft.com/en-us/library/ms998347.aspx.

Un autre problème que je vois de VS est après avoir ajouté du contenu à mon Page_Load sur mon fichier de connexion initial Password.aspx.cs, je reçois un problème de distribution invalide ci-dessous. J'ai aussi googlé sur ce problème mais les solutions que j'ai vues m'ont embrouillé encore plus. La section I Page_Load ajouté est:

protected void Page_Load(object sender, EventArgs e) 
     { 
      Response.Write("Hello, " + Server.HtmlEncode(User.Identity.Name)); 

      FormsIdentity id = (FormsIdentity)User.Identity; 
      FormsAuthenticationTicket ticket = id.Ticket; 

      Response.Write("<p/>TicketName: " + ticket.Name); 
      Response.Write("<br/>Cookie Path: " + ticket.CookiePath); 
      Response.Write("<br/>Ticket Expiration: " + 
          ticket.Expiration.ToString()); 
      Response.Write("<br/>Expired: " + ticket.Expired.ToString()); 
      Response.Write("<br/>Persistent: " + ticket.IsPersistent.ToString()); 
      Response.Write("<br/>IssueDate: " + ticket.IssueDate.ToString()); 
      Response.Write("<br/>UserData: " + ticket.UserData); 
      Response.Write("<br/>Version: " + ticket.Version.ToString()); 

     } 

Et l'exception VS je deviens:

System.InvalidCastException was unhandled by user code 
    Message="Unable to cast object of type 'System.Security.Principal.GenericIdentity' to type 'System.Web.Security.FormsIdentity'." 
    Source="AddFileToSQL" 
    StackTrace: 
     at AddFileToSQL.Password.Page_Load(Object sender, EventArgs e) in C:\Documents and Settings\Admin\My Documents\Visual Studio 2008\Projects\AddFileToSQL2\AddFileToSQL\Password.aspx.cs:line 22 
     at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) 
     at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) 
     at System.Web.UI.Control.OnLoad(EventArgs e) 
     at System.Web.UI.Control.LoadRecursive() 
     at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
    InnerException: 

Répondre

1

Cela devrait permettre que les utilisateurs autorisés correcte? Si oui, changer cette

<authorization> 
       <deny users="?" /> 
       <allow users="*" /> 
      </authorization> 

à

<authorization> 
       <deny users="?" /> 
      </authorization> 

En outre, vous essayez d'utiliser l'authentification intégrée pour se connecter à SQL à partir de IIS. Vous ne voulez probablement pas faire ça. Indiquez un nom d'utilisateur et un mot de passe à utiliser.

http://www.connectionstrings.com/sql-server-2008

+0

J'ai changé cette web.config ci-dessus à votre recommandé, mais je l'authentification de base sélectionné et non intégré à partir de IIS . Mais je vais vérifier le lien ci-dessus. – salvationishere

+0

Je parle de vos chaînes de connexion sql. Son authentification sql (nom d'utilisateur et mot de passe) ou l'authentification Windows (intégrée) –

+0

Oh, je comprends ce que vous dites maintenant. Cependant, je veux l'authentification de sql mais sans laisser le nom d'utilisateur et le mot de passe être envoyés sur le texte clair. – salvationishere

1

Quand je suis tombé sur cette erreur, il a été causé par la valeur passwordFormat étant sensible à la casse.

passwordFormat = "crypté"

fonctionnera mieux que

passwordFormat = "Encrypted"

+0

Cela a fonctionné pour moi. –

Questions connexes