C# 使用MVC2 ActionResult,我如何重定向(发布)到另一个站点

C# 使用MVC2 ActionResult,我如何重定向(发布)到另一个站点,c#,asp.net-mvc-2,post,redirect,C#,Asp.net Mvc 2,Post,Redirect,我有一个网页,收集数据和'张贴到另一个网站。我可以将站点url放在表单标签的作用中,但我希望在切换站点之前将信息记录在数据库中。在迄今为止的行动结果中,我有: [HttpPost] public ActionResult MyPage(MyPageModel model) { if (ModelState.IsValid) { StoreDate(model.fld1, model.fld2)

我有一个网页,收集数据和'张贴到另一个网站。我可以将站点url放在表单标签的作用中,但我希望在切换站点之前将信息记录在数据库中。在迄今为止的行动结果中,我有:

    [HttpPost]
    public ActionResult MyPage(MyPageModel model)
    {
        if (ModelState.IsValid)
        {
            StoreDate(model.fld1, model.fld2)
            var encoding = new ASCIIEncoding();
            var postData = "";
            foreach (String postKey in Request.Form)
            {
                var postValue = Encode(Request.Form[postKey]);
                postData += string.Format("&{0}={1}", postKey, postValue);
            }
            var data = encoding.GetBytes(postData);

            // Prepare web request...
            var myRequest = (HttpWebRequest)WebRequest.Create("https://www.site2.com");
            myRequest.Method = "POST";
            myRequest.ContentType = "application/x-www-form-urlencoded";
            myRequest.ContentLength = data.Length;

            // Send the data.
            Stream newStream = myRequest.GetRequestStream();
            newStream.Write(data, 0, data.Length);
            newStream.Flush();
            newStream.Close();
是否有人知道如何完成此操作,并使用适当的“返回”变量将此数据发布到其他站点


我已经根据下面的回复编辑了这个片段。

这篇文章已经发布了,所以不会有一个灵丹妙药(即一个简单的
ActionResult
)对你有效。由于您正在服务器上处理POST响应,因此需要自己重新创建到目标服务器的POST请求。要做到这一点,您需要利用
HttpWebRequest
vis。从
HttpWebRequest
获取响应后,您需要通过
ContentResult
将该响应传回。总而言之,这将是不平凡的,但它是可能的

更新: 根据您的代码片段,我将尝试添加以下内容:

WebResponse res = myRequest.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream());
string returnvalue = sr.ReadToEnd();
return Content(returnValue);

另一种选择是将表单操作指向另一个站点,并在提交表单之前向服务器发送ajax帖子。这比在HttpWebRequest中间扮演男人要容易得多。这种问题对我来说总是有点可疑。我曾经有过这样的想法,但不知道下一步该怎么办。我将如何根据回复构建ContentResult?@Randy,我已经用一个建议修改了我的答案。谢谢Kirk,这就是我所缺少的。