createuserwizard コントロールを含む Web サイトがありました。また、アカウントを作成すると、確認メールとその確認 URL がユーザーのメール アドレスに送信されます。
ただし、テスト実行時にメールの URL をクリックすると、次のエラーが表示されます。
Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
Source Error:
Line 17: {
Line 18: //store the user id
*Line 19: Guid userId = new Guid(Request.QueryString["ID"]);*
Line 20:
Error appeared on LINE 19.
もう 1 つの面白い点は、テスト実行の検証 URL が奇妙に見えることです。
http://localhost:4635/WebSite2/Verify.aspx?ID=System.Security.Principal.GenericPrincipal
通常、URL は次のようになります (これは、URL の末尾にある非常に多くの文字です:
http://localhost:2180/LoginPage/EmailConfirmation.aspx?ID=204696d6-0255-41a7-bb0f-4d7851bf7200
私が実際に考えていたのは、エラーの問題で URL の末尾に接続されていることです (Guid には 4 つのダッシュを含む 32 桁が含まれている必要があります)。
URL を生成するコードは次のとおりです。
protected void CreateUserWizard1_SendingMail(object sender,MailMessageEventArgs e)
{
string domainName = Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath;
string confirmationPage = "/Verify.aspx?ID=" + User.ToString();
string url = domainName + confirmationPage;
e.Message.Body = e.Message.Body.Replace("<%VerificationUrl%>", url);
}
提案と、この問題を解決するために何をすべきかを教えてください。
前もって感謝します。
アップデート:
protected void CreateUserWizard1_SendingMail(object sender,MailMessageEventArgs e)
{
MembershipUser userInfo = Membership.GetUser(CreateUserWizard1.UserName);
Guid userInfoId = (Guid)userInfo.ProviderUserKey;
string domainName = Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath;
string confirmationPage = "/Verify.aspx?ID=" + userInfo.ToString();
string url = domainName + confirmationPage;
e.Message.Body = e.Message.Body.Replace("<%VerificationUrl%>", url);
}
今、私のURLリンクは次のようになります:
http://localhost:4635/WebSite2/Verify.aspx?ID=username
ただし、「Guid には 4 つのダッシュを含む 32 桁を含める必要があります (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx」というエラーが残りました。