C# 如何在C类(.cs文件)和ASP.NET.aspx文件中使用相同的OracleMembershipProvider?

C# 如何在C类(.cs文件)和ASP.NET.aspx文件中使用相同的OracleMembershipProvider?,c#,asp.net,asp.net-membership,C#,Asp.net,Asp.net Membership,问题是,我想使用内置的成员资格功能来处理用户,特别是使用Oracle.Web.Security.oraclembershipProvider。我已经让提供程序处理.aspx文件,正确地将新用户插入到相应的Oracle表中并处理登录。但是,我在解决方案的网站组件旁边有一个webservice。我希望只有通过网站注册并可以发送有效用户名/密码和web请求的用户才能访问数据 无论如何,在.cs文件中,我执行以下操作: OracleMembershipProvider provider = new Or

问题是,我想使用内置的成员资格功能来处理用户,特别是使用Oracle.Web.Security.oraclembershipProvider。我已经让提供程序处理.aspx文件,正确地将新用户插入到相应的Oracle表中并处理登录。但是,我在解决方案的网站组件旁边有一个webservice。我希望只有通过网站注册并可以发送有效用户名/密码和web请求的用户才能访问数据

无论如何,在.cs文件中,我执行以下操作:

OracleMembershipProvider provider = new OracleMembershipProvider(); 
if (!provider.ValidateUser(username, password)) 
{
    return null;
}
对ValidateUser的调用引发异常,详细信息:“OracleConnection.ConnectionString无效”

我认为连接字符串在.aspx页面上工作的事实足以确认connectionstring是有效的

下面是它在.aspx文件中的外观,密钥位于第二行MembershipProvider=“myoraclembershipProvider”

还有。它总是返回false,并且Providers属性与默认提供程序的属性不匹配(当我设置断点并观察对象时)


有人知道如何解决这个问题吗?我觉得应该很简单,因为数据提供程序在.aspx页面上运行良好,但我一生都无法获得一个.cs文件来使用同一个提供程序,甚至无法看到该提供程序的存在。

请参阅上给出的第一个答案

这可能就是你问题的答案

<asp:Login ID="LoginUser" runat="server" EnableViewState="false" 
    RenderOuterTable="false" MembershipProvider="MyOracleMembershipProvider">
    <LayoutTemplate>
        <span class="failureNotification">
            <asp:Literal ID="FailureText" runat="server"></asp:Literal>
        </span>
        <asp:ValidationSummary ID="LoginUserValidationSummary" runat="server" CssClass="failureNotification" 
             ValidationGroup="LoginUserValidationGroup"/>
        <div class="accountInfo">
            <fieldset class="login">
                <legend>Account Information</legend>
                <p>
                    <asp:Label ID="UserNameLabel" runat="server" AssociatedControlID="UserName">Username:</asp:Label>
                    <asp:TextBox ID="UserName" runat="server" CssClass="textEntry"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="UserNameRequired" runat="server" ControlToValidate="UserName" 
                         CssClass="failureNotification" ErrorMessage="User Name is required." ToolTip="User Name is required." 
                         ValidationGroup="LoginUserValidationGroup">*</asp:RequiredFieldValidator>
                </p>
                //blah blah blah, code removed for length.
            </fieldset>
            <p class="submitButton">
                <asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="LoginUserValidationGroup"/>
            </p>
        </div>
    </LayoutTemplate>
</asp:Login>
<configuration>
  <system.data>
    <DbProviderFactories>      
      <clear />
      <add name="xxxOracleDataProvider" invariant="Oracle.DataAccess.Client" description=".Net Framework Data Provider for Oracle" 
       type="Oracle.DataAccess.Client.OracleClientFactory, 
             Oracle.DataAccess, 
             Version=4.112.2.0, 
             Culture=neutral, 
             PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>  

<connectionStrings>
  <add name="MEMBERSHIP_PROVIDER" 
     connectionString="
      Persist Security Info=True;
      user id = xxxxxx; 
      password = xxxxxx; 
      data source=
      (DESCRIPTION = 
        (ADDRESS_LIST = 
          (ADDRESS = 
            (PROTOCOL = TCP)
            (HOST = xxxxxxx)
            (PORT = xxxxxxxx)
          )
        )
        (CONNECT_DATA = 
         (SERVICE_NAME = xxxxx)
         (SERVER = DEDICATED)
        )
      );"
     providerName="Oracle.DataAccess"
     />       
</connectionStrings>

<system.web>
<customErrors mode="Off"/>
<webServices>
  <protocols>
    <add name="HttpGet"/>
    <add name="HttpPost"/>
  </protocols>
</webServices>
<compilation debug="true"/>    
<authentication mode="Forms">
  <forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
</authentication>
<membership defaultProvider="MyOracleMembershipProvider" hashAlgorithmType="SHA1">
  <providers>
    <clear />        
    <add name="MyOracleMembershipProvider"
         type="Oracle.Web.Security.OracleMembershipProvider, 
         Oracle.Web, Version=4.112.1.2, Culture=neutral,
         PublicKeyToken=89b483f429c47342"
         connectionStringName="MEMBERSHIP_PROVIDER"
         applicationName="xxx_xxxx_xxxxxx"
         enablePasswordRetrieval="false"
         enablePasswordReset="true"
         requiresQuestionAndAnswer="false"
         requiresUniqueEmail="true"
         passwordFormat="Hashed"
         minRequiredNonalphanumericCharacters="0"
         maxInvalidPasswordAttempts="7"
         minRequiredPasswordLength="12"
         passwordAttemptWindow="8"             
         />
  </providers>
</membership>    
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
 Membership.Provider.ValidateUser(username, password)