【发布时间】:2014-02-10 10:16:36
【问题描述】:
所以正如标题所暗示的那样,如何在向外部网站执行 HTTP POST 的同时将用户重定向到那里?我正在寻找类似的东西:
Redirect("MyWebsite.com", HttpAction.POST, new RedirectData(new { item = "itemValue"}));
必须在 ASP.NET mvc 中完成。
编辑
此行为是在外部网站上实现身份验证所必需的。认证算法:
- 用户导航到需要对其进行识别的网页。
- 网页调用认证网站的web服务,初始化认证。
- 初始化返回必须发布到给定 URL 的 GUID(假设它是“MyWebsite.com”)。
- 应该将用户重定向到发布数据的 URL。
到目前为止,我已经设法想出了这个:
string url = "MyWebsite.com";
NameValueCollection formData = new NameValueCollection();
formData["ticket"] = Ticket.ticket;
WebClient webClient = new WebClient();
byte[] responseBytes = webClient.UploadValues(url, "POST", formData);
Response.BinaryWrite(responseBytes);
Response.Redirect("MyWebsite.com", true);
我得到的响应是我应该被重定向到的网站的 HTML,问题是 - 现在怎么办?如何告诉浏览器显示通过响应获得的 HTML?如果我只是重定向到“MyWebSite.com”,它将执行一个 GET 操作,这不是我想要的。对响应进行二进制写入什么也没做——它只是将 POST 操作的响应写入我当前正在执行的操作——没有重定向到“MyWebSite.com”。
【问题讨论】:
-
上面的代码不适合你?你遇到了什么错误?
-
请解释为什么您需要这样做。您不能这样做,在重定向后始终执行 GET。但是,如果允许,您可以在您的网站上构建一个表单并将其发布到其他网站。
标签: c# asp.net-mvc http redirect