如何将数据从Silverlight OOB应用程序传递到asp.net网站?

时间:2011-07-12 05:11:48

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

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

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

3 个答案:

答案 0 :(得分: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");

<强> Silverlight的:

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

Button1_Click中,我致电DownloadStringAsync,传递包含用户指定号码的完整网址。

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

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

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发布到页面。

HTH

答案 1 :(得分:1)

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

答案 2 :(得分:0)

你可以像HtmlPage.Window.Eval一样使用(“window.location.href ='”+ YOURURL +“'”);