2010-04-27 80 views
1

當我瀏覽我的C#/ SQL Web應用程序時,現在在IIS 6.0中出現上述錯誤。這是在32位XP操作系統上的VS 2008和SS 2008中構建的。在我將Login控件添加到它之前,該應用程序正在工作。不過,這是我第一次配置登錄/密碼控制,所以我可能會錯過一些非常基本的東西。配置錯誤指定的ASP.NET密碼格式無效

直到我嘗試登錄時,纔會出現此錯誤。這裏是我從IIS的錯誤的細節;我得到同樣的錯誤在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 

而且我的web.config的相關內容有:

<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> 

我檢查,我有我的SSMS的aspnetdb的數據庫。網絡服務帳戶具有對此數據庫的SELECT,EXECUTE,INSERT,UPDATE訪問權限。但我看到的一個問題是,除了aspnet_SchemaVersions,它只有2條記錄(公共和成員資格)之外,此數據庫中的所有表都是空的。這是正確的嗎?

我通過ASP.NET配置嚮導添加了用戶和角色,並且我相信自從我遵循Microsoft教程http://msdn.microsoft.com/en-us/library/ms998347.aspx之後,我正確地設置了它。

我從VS看到的另一個問題是在我的初始登錄Password.aspx.cs文件的內容添加到Page_Load後,我在下面得到了一個無效的投射問題。我也搜索了這個問題,但我看到的解決方案更讓我困惑。在Page_Load部分我加的是:

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()); 

     } 

而且VS例外,我得到:

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: 

回答

1

這應該僅允許授權用戶是否正確?如果是這樣,改變這種

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

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

另外,您要使用集成的身份驗證連接從IIS到SQL語句。你可能不想這樣做。指定要使用的用戶名和密碼。

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

+0

我改變以上您對本web.config中建議,但我有基本身份驗證選擇,而不是從IIS集成。但我會檢查上面的鏈接。 – salvationishere 2010-04-27 20:53:24

+0

我在說你的sql連接字符串。它的sql認證(用戶名和密碼)或Windows身份驗證(集成) – 2010-04-27 21:15:49

+0

哦,我明白你現在說的話。但是,我想要sql身份驗證,但不要讓用戶名和密碼通過明文發送。 – salvationishere 2010-04-28 03:18:33

1

,當我遇到這個錯誤來了而且用了passwordFormat是區分大小寫的值造成的。

了passwordFormat =「加密」

將更好地工作,爲

了passwordFormat =「加密」

+0

這對我有效。 – 2015-09-07 19:46:15

相關問題