如何在ASP.NET WebAPI确认电子邮件的URL中编码字符?

时间:2015-01-16 12:38:59

标签: c# asp.net asp.net-web-api

我有一个ASP.NET WebAPI应用程序而不是需要为确认电子邮件创建链接。这是代码:

 callbackUrl1 = "http://localhost:2757/index.html" +
                "?load=email" +
                "&userId=" + user.Id +
                "&code=" + code;
 await UserManager.SendEmailAsync(
    user.Id, 
    "Confirm your account", 
    "Please click this link: <a href=\"" + callbackUrl1 + "\">link</a>");

我的代码几乎正常工作,但似乎我需要对进入查询字符串的数据进行编码。

使用MVC,这样做是这样的:

 var callbackUrl = Url.Action("ConfirmEmail", 
     "Account", 
     new { userId = user.Id, code = code }, 
     protocol: Request.Url.Scheme);

但是我没有使用MVC,当我尝试添加它时,我遇到了许多无关的问题。

有人可以告诉我如何编码(如果这是正确的词)进行链接的数据吗?

2 个答案:

答案 0 :(得分:2)

使用System.Uri Fiddle here

对网址进行编码
using System;

public class Program
{
    public static void Main()
    {

        var callbackUrl1 = new System.Uri("http://localhost:2757/index.html" +
                "?load=email" +
                "&userId=" + "12345££&^" +
                "&code=" + "myCo   de");


        var aHref = string.Format("<a href=\'{0}'>link</a>", callbackUrl1.AbsoluteUri);


        Console.WriteLine(aHref);
    }
}

答案 1 :(得分:0)

使用HttpUtility.UrlEncode方法。请注意,您仍需要对电子邮件HTML的URL进行HTML编码