我正在 ASP.Net MVC 中开发一个 Web 应用程序,其中用户使用 sql 成员资格提供程序注册成员资格。当他们注册时,他们被放入系统但未被批准。然后,代码会向用户发送一封批准电子邮件,其中包含给定的电子邮件。
BfEncrypt refid = new BfEncrypt();
refid.Encrypt(user.ReferenceID);
string code = HttpContext.Current.Server.UrlEncode(refid.CipherText);
...
Body += "<a href=\"http://localhost:1091/approve/" + code + "\">Approval Link</a>\n\r\n\r";
但是当用户点击链接时,他们会收到以下错误:
说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。
请求的 URL:/Approve/k/9IHrY43os=
问题是,如果我在发送链接之前对链接进行 url 编码,为什么它会在尝试调用操作之前进行解码?当我收到错误时,我浏览器中的 url 实际上是 ' http://localhost:1091/Approve/k%2f9IHrY43os%3d '。我的路由设置正确,但它没有考虑 url 中加密字符串中的额外“/”(因为它不应该在那里。)