2011-03-25 3 views
0

웹 응용 프로그램에서 ASP.NET 멤버십을 사용하고 있습니다. 내가 UserControl을에 다음 코드가 있습니다CreateUserWizard가 다음 단계로 넘어 가지 않습니다.

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="memberRegister.ascx.cs" Inherits="UmbracoMembership.usercontrols.memberRegister" %> 
<asp:LoginView ID="lvRegister" runat="server"> 
    <AnonymousTemplate> 
     <asp:CreateUserWizard ID="cwMember" runat="server" 
      LoginCreatedUser="False" DisableCreatedUser="True" 
      OnCreatedUser="cwMember_CreatedUser" ContinueDestinationPageUrl="~/Umbraco/"> 
      <WizardSteps> 
       <asp:CreateUserWizardStep ID="cuwStep1" runat="server"> 
        <ContentTemplate> 

         <div class="row1"><label>Username:</label><asp:TextBox ID="Username" runat="server" CssClass="inner-field"></asp:TextBox></div> 
         <div class="row1"><label>Full Name:</label><asp:TextBox ID="FullName" runat="server" CssClass="inner-field"></asp:TextBox></div> 
         <div class="row1"><label>Email:</label><asp:TextBox ID="Email" runat="server" CssClass="inner-field"></asp:TextBox></div> 
         <div class="row1"><label>Password:</label><asp:TextBox ID="Password" runat="server" TextMode="Password" CssClass="inner-field"></asp:TextBox></div> 
         <div class="row1"><label>Confirm Password:</label><asp:TextBox ID="ConfirmPassword" runat="server" TextMode="Password" CssClass="inner-field"></asp:TextBox></div> 

        </ContentTemplate> 
        <CustomNavigationTemplate> 
          <div class="button-area"> 
           <asp:Button ID="CreateUserButton" runat="server" Text="" CommandName="MoveNext" ValidationGroup="CreateUserWizard" CssClass="create-button"/> 
           </div> 
        </CustomNavigationTemplate> 

       </asp:CreateUserWizardStep> 
       <asp:CompleteWizardStep ID="cuwStep2" runat="server"> 
        <ContentTemplate> 

         <div>Your account has been created, but still needs to be activated. <br />You will be recieving an activation email soon.</div> 

        </ContentTemplate> 
       </asp:CompleteWizardStep> 
      </WizardSteps> 
     </asp:CreateUserWizard> 
    </AnonymousTemplate> 
</asp:LoginView> 

을 그리고 이것은 코드 숨김입니다 :

public partial class memberRegister : System.Web.UI.UserControl 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      // is user is already logged on, redirect to home page (doesn't make sense to register when already logged in...) 

      if (umbraco.library.IsLoggedOn()) 
       Response.Redirect("~/"); 

     } 

     protected void cwMember_CreatedUser(object sender, EventArgs e) 
     { 
      CreateUserWizard cuw = (CreateUserWizard)sender; 
      MembershipUser user = System.Web.Security.Membership.GetUser(cuw.UserName); 
      if (user != null) 
      { 
       //create a new GUID 
       string newUserGUID = System.Guid.NewGuid().ToString("N"); 

       //get profile for this user. 
       UmbracoMembership.MemberProfile mp = MemberProfile.GetUserProfile(cuw.UserName); 
       mp.AuthGuid = newUserGUID; 
       mp.fullName = ((TextBox)cuw.CreateUserStep.ContentTemplateContainer.FindControl("FullName")).Text; 
       mp.email = ((TextBox)cuw.CreateUserStep.ContentTemplateContainer.FindControl("Email")).Text; 
       mp.Save(); 

       //add user to the site members group 
       Roles.AddUserToRole(cuw.UserName, "RegisteredUsers"); 

       //Send email 
       String fromAddress = "[email protected]"; 
       String toAddress = mp.email; 
       SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587); 

       smtp.EnableSsl = true; 
       smtp.Credentials = new NetworkCredential("[email protected]", "1234"); 

       MailAddress _from = new MailAddress(fromAddress); 
       MailAddress _to = new MailAddress(toAddress); 
       MailMessage mMsg = new MailMessage(_from, _to); 
       mMsg.Subject = "Welcome!"; 
       mMsg.Body = "Please click the following link to authorize your new account. " + "http://" + Request.ServerVariables["HTTP_HOST"] + Request.ApplicationPath.TrimEnd('/') + "/auth.aspx?a=" + user.UserName + "&b=" + newUserGUID; 

       smtp.Send(mMsg); 




           } 
     } 
    } 

} 

몇 가지 이유를 들어 "사용자를 만듭니다"를 클릭 한 후와 포스트 백은 사용자가 반환됩니다, 발생 전체 페이지로 이동하는 대신 등록 페이지로 이동하십시오. 나는 모든 것을 시도했다. 반나절 동안 온갖 종류의 설정으로 주위를 둘러 보았습니다. 아이디어가 있으십니까?

+0

viewstate가 비활성화되어 있습니까? – Robert

+0

그렇게 생각하지 마십시오. –

+0

등록 페이지로 리디렉션되고 있습니까 ?? 나는 당신에게 마크 업을 가져 갔고 성공한 사용자 생성 후에 나는 성공 메시지를 얻었다. 중단 점을 설정하고 코드가 어딘가에서 오류를 생성하지 않는지 확인 했습니까? – gbs

답변

0

음 ... CreateUserWizard에서 예외를 처리하지 않으면 아무 일도 일어나지 않습니다. 사용자가 생성되고 코드 숨김 오류가 표시되지 않습니다. 방금 ​​try ... catch 및 response.write(ex.message)을 추가했는데 오류가 발생했습니다. 오류 자체가 프로파일 매니저의 문제점이었습니다. 그물에있는 대부분의 예제는 asp.net 2.0의 프로필 공급자를 위해 만들어진 것으로 보입니다. asp.net 4에서는 ProfileBase 클래스를 직접 구현하고 속성을 정의하는 경우 web.config 프로필 속성을 정의 할 필요가 없습니다.

관련 문제