0

WebアプリケーションでASP.NETメンバーシップを使用しています。ユーザーコントロールに次のコードがあります。

<%@ 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 = "eample@bla.com";
                String toAddress = mp.email;
                SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);

                smtp.EnableSsl = true;
                smtp.Credentials = new NetworkCredential("eample@bla.com", "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);




                               }
        }
    }

}

「ユーザーの作成」をクリックしてポストバックが発生した後、何らかの理由で、ユーザーは完全なページに移動するのではなく、登録ページに戻ります。私はすべてを試しました。半日、いろいろな設定をいじってみました。何か案は?

4

1 に答える 1

0

そうですね...CreateUserWizardで例外を「処理」しないと、何も起こりません。ユーザーが作成され、コードビハインドエラーは表示されません。try ... catchを追加したところresponse.write(ex.message)、エラーが発生しました。エラー自体は、プロファイルマネージャーの問題でした。ネット上のほとんどの例は、asp.net2.0のプロファイルプロバイダー用に作成されているようです。asp.net 4では、ProfileBaseクラスを自分で実装し、そこでプロパティを定義する場合は、web.configプロファイルプロパティで定義する必要はありません。

于 2011-03-26T15:19:21.663 に答える