通过C#代码发出http请求?
问题描述:
嗨
我想知道是否有可能在你有C#代码(通过调度是在它自己的线程,并没有知识的httpcontext)一个请求去控制器?
//server side code
// do calculations
// post to a controller that takes in a list of view models
// do stuff with the collection of view models.
public myControllerIwantToCallFromServerSide(List<VM> viewModels)
{
// stuff here
}
我需要一些方法做一个HTTP请求,这样我就可以得到一个HttpContext的,因为我需要一个住的HTTP上下文中使用库(行动邮件),其采用MVC视图,它呈现为一个电子邮件并发送它。
答
你可以使用的WebClient类:
using (var client = new WebClient())
{
var values = new NameValueCollection
{
{ "prop1", "value 1" },
{ "prop1", "value 2" },
};
var result = client.UploadValues("http://example.com/", values);
}
答
我用理查德张贴的方法。我打电话给viewengine渲染我的部分视图,然后我使用System.Net.Mail.SmtpClient
生成电子邮件并发送它。
我很抱歉,因为我最好在上面评论,但我没有这样的声望。
+0
我认为你需要一个http上下文来使用它。如果那能够奏效,那么我可以使用我正在使用的库,因为它几乎是在做什么。它需要一个视图呈现并将其发送出去。 – chobo2 2011-05-20 17:31:49
这当然有可能,这似乎是一个坏主意。 – R0MANARMY 2011-05-20 16:15:22
@ R0MANARMY - 雅我知道这看起来不太理想,但我正在寻找几个选择做这样的事情,或者我必须让我自己的smtp电子邮件发件人,并尝试使这些电子邮件发送看起来一样从这个图书馆期望我失去mvc的观点和主页,或者撕掉我迄今为止在图书馆所做的所有电子邮件,并从头开始。所以除非有人能够更好地告诉我一些事情,我选择的似乎是最坏的情况下最好的。 – chobo2 2011-05-20 16:18:59
@Richard - 我相信你发布的内容需要一个我没有的实时HTTP上下文。 – chobo2 2011-05-20 17:30:41