C# 使用MVC2 ActionResult,我如何重定向(发布)到另一个站点
我有一个网页,收集数据和'张贴到另一个网站。我可以将站点url放在表单标签的作用中,但我希望在切换站点之前将信息记录在数据库中。在迄今为止的行动结果中,我有: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)
[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,这就是我所缺少的。