Ich bin derzeit an einem Projekt arbeiten und ein seltsames Problem auftreten, erzeugen ich eine callbackUrl, die in die Bestätigungs-Email, um das registrierte Konto zu aktivieren geht:callbackUrl ändert? mit% 3f
var callbackUrl = Url.Action("registerconfirmation", "account", new { Id = "?" + confirmationToken }, protocol: Request.Url.Scheme);
Das Problem, dass es diese uRL generiert:
http://localhost:8159/account/registerconfirmation/%3fv9egt7cjoEGQvHfauiYE1A
Wie Sie sehen es die zu ersetzen scheint? mit% 3f Ich erwarte, dass dies etwas mit HTML-Codierung zu tun hat. Ich habe versucht, die? zur bestätigungToken aber das gab mir tesaame ergebnis.
Ich verwende derzeit das ActionMailer-Paket, um meinen Code in meinen Controllern zu minimieren, beim Empfangen der E-Mail scheint es die callbackUrl nicht richtig zu entschlüsseln, während ich die E-Mail-Logik direkt in meinem Register HttpPost entschlüsselt hatte .
EmailController:
public class EmailController : MailerBase
{
public EmailResult ConfirmationEmail(Register model, string callbackUrl)
{
From = "[email protected]";
To.Add(model.Email);
Subject = ("Email Confirmation");
ViewBag.Url = callbackUrl;
return Email("ConfirmationMessage", model);
}
}
RegisterController:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(Register model)
{
string confirmationToken = CreateGuid();
Account account = new Account(model.Username, model.Password, model.FirstName, model.LastName, model.Email, false, confirmationToken);
Session["accountID"] = Repository.InsertAccount(new Account(model.Username, model.Password, model.FirstName, model.LastName, model.Email, false, confirmationToken));
var callbackUrl = Url.Action("registerconfirmation", "account", new { Id = "?" + confirmationToken }, protocol: Request.Url.Scheme);
try
{
new EmailController().ConfirmationEmail(model, callbackUrl).Deliver();
}
catch (Exception e)
{
ModelState.AddModelError("ConfirmationMailFailed", "Problem sending email" + e.Message);
}
return View("emailconfirmation");
}
E-Mail ansehen:
<p>To get started, please click <a href="@ViewBag.Url">here</a> to activate your account.</p>
entfernen. versuch das - var callbackUrl = Url.Action ("registerconfirmation", "account", neu {Id = confirmationToken}, protocol: Request.Url.Scheme); also wäre Ihre URL - http: // localhost: 8159/account/registerbestätigung? Id = fv9egt7cjoEGQvHfauiYE1A –
Das ist es, danke! – josephzigler
hinzugefügt als Antwort, so dass es für andere klar wäre, ohne durch Kommentare zu gehen. –