【发布时间】:2012-04-12 09:42:07
【问题描述】:
我在设计从 ASP.NET 应用程序调用双工 WCF 服务的最佳方式时遇到问题我有以下情况:
1) 我有一个带有一些操作的双工 WCF 服务
2) 从 ASP.NET Web 应用程序(这是我的客户端)我将其设为默认值页面实现回调接口,然后从双工服务调用一个方法,将自身作为回调的处理程序发送
3)当回调在 default.aspx 页面上返回时,我无法显示页面上的结果,因为整个 HttpContext 为空,所以我无法访问任何控件或 Application[] 或 Session[] 变量
这是 Default.aspx 中的代码
[CallbackBehavior(UseSynchronizationContext = false)]
public partial class _Default : System.Web.UI.Page, VehicleTrackingService.IDuplexServiceCallback
{
public _Default()
{
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(delegate
{
try
{
DuplexService client = new DuplexServiceClient(new InstanceContext(new_Default()));
switch (DropDownList1.SelectedItem.Value)
{
case "0":
{
client.Method1(int.Parse(txt_name.Text));
break;
}
case "1":
{
lbl_res.Text = "Not Provided yet.";
break;
}
default:
{
lbl_res.Text = "Not Provided yet.";
break;
}
}
}
catch(Exception ex)
{
}
}));
}
public void DuplexCallbackFunction(string response)
{
// Wanna to show result (the response) from here ...
}
有什么帮助吗?
【问题讨论】:
-
对于使用 WCf Duplex 服务,从客户的角度和架构上来说,这是一个有点糟糕的选择。如果您必须连接到单独的 WCF 服务来检索数据并且服务调用和响应之间存在延迟,那么您最好将服务调用交给后台任务,然后使用轻量级 AJAX 调用从客户端轮询以检查对于返回的数据。您的客户端将拥有响应式 UI,并且您的服务器不会浪费资源。
-
你能不能给我一个例子,因为我无法得到它