【问题标题】:How to pass data from Silverlight OOB application to asp.net website?如何将数据从 Silverlight OOB 应用程序传递到 asp.net 网站?
【发布时间】:2011-07-12 05:11:47
【问题描述】:

我创建了 silver-light 4.0 应用程序,该用户可以输入他们的用户名和密码。
从 SL 应用程序提交此秘密数据(用户名、密码)后,
它使用查询字符串提交到网站..
我想传递如下 URL 字符串
例如:- http://testsite.com/mypage.aspx?

我想以加密格式将用户名和密码从 SL 传递到 Aspx 页面..
我如何将这些信息从 SL 应用程序传递到 asp.net 网站..

【问题讨论】:

  • 提交凭据的网页是您自己的网页吗?如果是这样,网页会给你什么?为什么不使用 WCF 服务呢?或者您是否正在向第三方网站提交(在这种情况下,他们应该已经有关于您应该如何提交的规范)?

标签: asp.net silverlight silverlight-oob out-of-browser


【解决方案1】:

所以你可以只使用WebClient 类并获取页面。

(我假设你在做 asp.net WebForms 而不是 MVC)

您的 asp.net 页面应该是一个空白页面,在您后面的代码中读取您的查询字符串并使用它执行您需要的操作,这取决于您使用 Response.Write(); 编写适当的响应的成功或失败。

在您的 silverlight 代码中,您只需要请求您的页面,然后您就可以从您的 asp.net 页面读取响应。

Asp.net:

var encyString = Request.QueryString["str"];
//some logic
Response.Write("Success");

银光:

WebClient client = new WebClient(); 
client.DownloadStringCompleted +=
    new DownloadStringCompletedEventHandler(
    client_DownloadStringCompleted);

Button1_Click 中,我调用DownloadStringAsync,传递包含用户指定号码的完整URL。

private void Button1_Click(object sender, RoutedEventArgs e)
{
    string encryptedString = "example";
    client.DownloadStringAsync
      (new Uri("http://testsite.com/mypage.aspx?"+encryptedString));
}

在 DownloadStringCompleted 事件处理程序中,我检查事件 args 的 Error 属性是否为空,然后将响应或错误消息输出到文本块。

void client_DownloadStringCompleted(object sender,
  DownloadStringCompletedEventArgs e)
{
    if (e.Error == null)
        resultBlock.Text = "Using WebClient: "+  e.Result;
        //will be Response.Write();

    else
        resultBlock.Text = e.Error.Message;
}

以上代码抄袭自this blog

请记住,嗅探器可以读取您的请求。如果您需要更好的安全性,您可能需要使用 SSL。发送此数据的一种更安全的方法可能是将其发布到您的 asp.net 页面。

This article 描述了如何从 silverlight POST 到页面。

HTH

【讨论】:

  • Hello @giddy 是否有可能在从客户端 PC 运行到网站页面的 SL OOB 应用程序中。我将参数作为查询字符串从浏览器应用程序外传递到 default.aspx 页面......?跨度>
  • 如果我没记错的话,如果这个应用程序是从同一个域安装的,您可以从 OOB SL 应用程序请求。 (例如:该应用程序是从 testapp.com 安装的)如果它是从另一个域安装的,那么您必须在 testapp.com 的根目录中包含一个 clientaccesspolicy.xml 文件,以便您的 SL 应用程序可以访问它。 See this page clientaccesspolicy.xml 有很多默认示例,你可以通过 google 找到。
  • 非常感谢您的好建议。我的应用程序在浏览器之外运行(在客户端机器上),然后我在应用程序中输入用户名和密码,并以加密格式传递查询字符串,如下所示:testsite.com/mypage.aspx?<encrypted_string>
【解决方案2】:

我从问题中了解到的是,您要对用户进行两次身份验证——首先是在 SL 应用程序中,然后是在 ASP.Net 应用程序中。相反,您可以只在 SL 中验证用户并将结果(可能是真/假或令牌)传递给 ASP.Net 应用程序吗?这是我觉得安全的方式。

【讨论】:

  • 那么如何与SQL server通信并检查是否授权。
  • 我没有对用户进行两次身份验证。只是我只从页面检查用户身份验证。我不知道如何使用 sql server 从 SL 验证用户。
  • 观看此视频 - link。它适用于 SL3,但应该适用于 SL4。您要查找的内容很复杂,因此您需要很好地了解身份验证过程。
【解决方案3】:

你可以使用 HtmlPage.Window.Eval("window.location.href='"+ YOURURL +"'");

【讨论】:

  • @Priyan_R 我想将用户名和密码从 SL 应用程序传递到带有加密查询字符串到 url 的新网页
  • 传递使用加密检查scrypt.codeplex.com从silverlight加密的Url Querystring@
猜你喜欢
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多