在ASP中,重定向到外部页面的返回类型是什么?净MVC

本文关键字:返回类型 是什么 MVC ASP 重定向 外部 | 更新日期: 2023-09-27 18:01:54

这主要与我之前的问题有关,但与之不同。我在我的代码集成一个支付网关,我有一个帖子URL张贴到。点击按钮时,控件从我的视图转到控制器我在那里调用一个方法来完成post。

所以我担心的是我目前使用下面的代码发布到URL,但是提供者还没有准备好,所以我无法测试,但我想知道我是否在这里使用正确的返回类型。

这会将我从控制器重定向到提供商网站/页面吗?

正确的做法是什么?有些地方只能通过Javascript实现,不能通过控制器实现。

身体可以澄清我一直在与这个斗争了过去的几天?

public HttpWebResponse SendPostRequest(string data, string url)
{
    var datetime = DateTime.UtcNow;
    data = string.Format("ID*1100|Field01*19101|FirstName*james|LastName*MEZE|AmountDue*20000|CurrentTime*7/5/2016 4:25 PM);
    var requestPayload = Encrypt(data);
    url = "https://www.example.com/Account/SSO/Home";
    HttpWebRequest httpRequest = (HttpWebRequest) HttpWebRequest.Create(url);
    httpRequest.Method = "POST";
    httpRequest.ContentType = "text/plain";// "application/x-www-form-urlencoded";
    httpRequest.ContentLength = encryptedRequestPayload.Length;
    var streamWriter = new StreamWriter(httpRequest.GetRequestStream());
    streamWriter.Write(encryptedRequestPayload);
    streamWriter.Close();
    /*var response = (HttpWebResponse)httpRequest.GetResponse(); 
    var statusCode = response.StatusCode; 
    var description = response.StatusDescription;
    var sr = new StreamReader(response.GetResponseStream());
    var text = sr.ReadToEnd();*/
    return (HttpWebResponse) httpRequest.GetResponse();
}

返回HttpWebResponse只是显示了一个空白的页面System.Net.HttpWebResponse行。但是在响应中,我看到的是XML消息,其中的响应说服务停止了,请联系管理员。为什么我无法在网页上看到该消息?请帮助。

在ASP中,重定向到外部页面的返回类型是什么?净MVC

要重定向到外部网页,您可以使用Redirect方法并传递url。

public ActionResult SendPostRequest(string data, string url)
{
    //do youre stuff
    return Redirect("https://www.example.com/Account/SSO/Home");
}

这只适用于HTTP GET调用,因为当它们成为重定向结果时,浏览器会执行新的GET。

如果你想POST到另一个页面,并显示结果页面给你的访问者,我认为实现这一点的唯一可能的方法是使用JavaScript。为此,您可以返回一些简单的html与<script>标签,发送<form>与HTTP POST。

//$ is the C#6 syntax of string.Format
return Content($@"
    <form action='https://www.example.com/Account/SSO/Home' id='myForm' method='post'>
      <input type='hidden' name='value1' value='{value1}' />
      <input type='hidden' name='value2' value='{value2}' />
    </form>
    <script>
      document.getElementById('myForm').submit(); //submit the form
    </script>");

我从这个答案中得到了一个表单的想法

你似乎有两个问题:

1)服务器没有按照您想要的方式响应。您可能需要联系管理员,正如消息所说。2)你没有返回ASP的东西。. NET MVC期望框架调用的ToString()方法只显示System.Net.HttpWebResponse

你已经很接近了。您不应该返回从响应流中获得的文本吗?

你可以这样做:

return Content(text); // after uncommenting your code.

此答案将向您显示成功地尝试将数据发送到服务器并将响应传递给客户端。