我创建了silver-light 4.0应用程序,用户可以输入他们的用户名和密码。
从SL应用程序提交此秘密数据(用户名,密码)后,
它使用查询字符串提交到网站..
我想传递如下URL字符串
对于前: -
http://testsite.com/mypage.aspx?<encrypted string&gt;
我想以加密格式将用户名和密码从SL传递到Aspx页面。
我如何将这些信息从SL应用程序传递到asp.net网站..
答案 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 +“'”);