1

我正在构建一个用于推送通知的 WCF 应用程序,其中用户必须先订阅自己,然后订阅客户端从 WCF 获得响应。

我在 WCF 中使用 wsDualHttpBinding 作为绑定和回调。

我不想从客户端调用递归函数。我在 WCF 中使用计时器,当数据库中发生任何更新时,WCF 会抛出消息。我的 WCF 已准备好,但无法在客户端显示消息。

现在我的问题是当客户端从 WCF 获得响应时如何显示消息。

我在 aspx.cs 上的客户端代码是:

public void SendResult(string message)//I got message = "Test String"
{
   Response.Write(message);// it throw error "Response is not available in this context."
// I also use this code 

HttpContext.Current.Response.Write(message); // but it also give error "Object reference not set to an instance of an object."

}

这是一个非常关键的问题,我只需要显示信息

任何帮助将不胜感激。

编辑 1

服务方法调用

  protected void Page_Load(object sender, EventArgs e)
  {
        SocialProfilesService.SocialClient client = 
               new SocialProfilesService.SocialClient(new InstanceContext(this)); 
        client.Subscribe(userid)
  } 

编辑 2

我也试过

 SynchronizationContext uiSyncContext;
 uiSyncContext = SynchronizationContext.Current;
 public void SendResult(string message)//I got message = "Test String"
 {
   SendOrPostCallback callback = delegate(object state)
    {
        Response.Write(message);
    };
    uiSyncContext.Post(callback, message);
 }

但它也给了我错误“对象引用未设置为对象的实例”。做什么

4

1 回答 1

0

你应该看看这篇文章。这应该会有所帮助。它提供了一个订阅和推送更新的简单示例。

文章

根据我们的讨论。看来您的服务运行良好。我假设您正在适当地调用 SendResult 并传递消息。这是您可以尝试的另一件事...这是来自 Asp.net 的 java 脚本警报

    Page.RegisterStartupScript("startScript", "<script language=JavaScript>Message("+message+" );</script>");

    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "testmsg", "<script>alert('your message goes here');</script>");
于 2013-02-11T06:21:09.293 回答