我想将ASP.NET MVC的视图用作邮件模板引擎。为此,我使用System.ComponentModel.Component.WebClient从另一个控制器操作调用一个控制器操作,解析返回的网页并通过电子邮件发送。
在这种情况下,是否可以将当前用户的登录凭据(我使用FormsAuthentication)转发给WebClient请求的控制器操作?用户密码是加密的,因此我不能仅使用其用户名和密码创建新的NetworkCredentials实例。
答案 0 :(得分:5)
是的,您只需将.ASPXAUTH Cookie从当前Request
对象复制到WebClient
但由于您可以访问机器密钥,因此您可以动态创建自己的cookie。这是应该做的代码(我找不到我实际做的那个项目)
var ticket = new FormsAuthenticationTicket(User.Identity.Name, true, 5);
string aspxAuthCookieValue = FormsAuthentication.Encrypt(ticket);
此代码为您当前的用户名创建一个表单身份验证cookie,并且到期时间为5分钟。
答案 1 :(得分:1)
您不是在寻找类似“rendering a view to a string”
的内容,而不是执行http请求