【问题标题】:ASP .Net, Redirect to an external page while POSTING dataASP .Net,在发布数据时重定向到外部页面
【发布时间】:2013-11-08 12:50:47
【问题描述】:

您好,我需要在我的 ASP.Net 应用程序中处理外部 API。

在我的应用程序中单击按钮时,我必须将用户重定向到外部 URL,同时发布一些用户凭据(用户名、密码)以允许访问那里(外部第 3 方页面)。

如果我尝试在不发布凭据的情况下访问该外部页面(只是一个重定向),我将无法查看所需的页面,而是出现一条错误消息,指出凭据无效(来自第 3 方页面)。

假设以下是信息

1. URL need to access : https://externalurl.com/external-page.asp
2. username           : myusername
3. password           : mypassword
  • 如果我提交一个简单的 HTML 表单,它的工作原理如下。

不知道如何在 ASP .Net 中的 C# 代码中执行此操作。

我可以使用WebRequest API 发布数据,但无法在同一个会话中重定向。如果有人可以指导这样做会很棒。提前谢谢...!!!

编辑...

  1. 就我而言,我无法使用 javascript 或任何客户端脚本来执行此操作。

  2. 基本上我不必为我的 POST 数据读取任何响应。我需要重定向到该页面(发布信息时的外部位置)

【问题讨论】:

  • 尝试使用这个类WebClient
  • 为什么表单发布解决方案不足?如果没有客户端脚本,我认为这是唯一的方法,除非您将服务器用作客户端和外部服务器之间的代理。换句话说,您不会重定向客户端,而是充当与双方(外部服务器和客户端)通信的中间人。
  • 嗨 mikey,是的,如果这不能与任何 ASP.Net API 一起使用,我愿意使用表单提交。但是用户名和密码的值必须根据不同的用户动态设置。有点困惑如何在这里做到这一点。如果你能详细解释一下,那就太好了。谢谢....
  • @JibW -“用户名和密码值必须根据不同的用户动态设置” 或 hUsername.Text = (我不记得确切的属性)。或者我很确定你甚至可以做类似

标签: c# asp.net post http-post


【解决方案1】:

您可以使用HttpWebRequest 来完成此操作,但您需要缓存您的凭据,以便它们随每个请求一起传递,而不仅仅是第一个请求;像这样:

// Set queryUrl to your URL, either hard-coded or passed in
HttpWebRequest req = WebRequest.Create(queryUrl) as HttpWebRequest;

// Set your credentials
NetworkCredential cred = new NetworkCredential(username, pwd, domain); 

// Setup cache to store your credentials for future requests
var cache = new CredentialCache {{queryUrl, "Ntlm", cred}};
req.Credentials = cache;

HttpWebResponse response = req.GetResponse() as HttpWebResponse;

【讨论】:

    【解决方案2】:

    对你的按钮这样做

    <asp:Button ID="Button1" PostBackUrl="https://externalurl.com/external-page.asp" runat="server" Text="Submit" />

    希望这很清楚

    http://msdn.microsoft.com/en-us/library/ms178140%28v=vs.100%29.ASPX

    【讨论】:

    • 这个我试过了,但是如何用这种方式发布数据呢?在我的情况下“用户名:我的用户名”和“密码:我的密码”
    • 只有 2 个文本框和按钮,并确保文本框的客户端 ID 与“用户名”和密码匹配。您可以尝试将 clientid 模式设置为静态。或使用此处解释的 jquery stackoverflow.com/questions/4350674/…
    • 我刚做了这个。刚刚创建了两个文本框并将 ID 字段命名为完全一样,并添加了 PostBackUrl 属性。它尝试访问该位置,但数据没有发布......因此,当我看到正常重定向时,我看到了错误消息......
    【解决方案3】:

    您可以像现在一样设置表单方法和操作。或者在按钮上使用 postbackURL。

    问题在于设置元素的名称以便能够提交它们。您必须使用 javascript 来设置隐藏字段。因为 .net 更改了服务器端控件上呈现的元素的“名称”属性。

    因此,在按钮的客户端单击事件中,您可以将隐藏字段的值(就像您的问题中的字段一样)设置为您需要的任何值。而且,当表单提交时,它们会以正确的名称发布。

    【讨论】:

      猜你喜欢
      • 2013-09-19
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 2021-03-02
      • 1970-01-01
      相关资源
      最近更新 更多