Silverlight SignalR Cross Domain无法正常工作

时间:2013-08-22 17:13:02

标签: silverlight signalr

我有一个Silverlight 5.0应用程序,我正在尝试连接到跨域SignalR MVC应用程序 没有成功。我们正在使用IE 8.这是我到目前为止所尝试的。

在Silverlight方面: Silverlight应用程序托管在

  

http://testserver:8088/SilverApp

在根文件夹中添加了clientaccesspolicy.xml文件。

var conn = new HubConnection("http://testserver:8088/MVC/");
var hub = conn.CreateProxy("SignalRMVC.Hubs.ChatHub");
hub.On<string>("NewMessage", message => Deployment.Current.Dispatcher.BeginInvoke(() => MessageBox.Show(message)));
conn.Start();

在MVC方面: 应用程序托管在

  

http://testserver:8088/MVC

我添加了这些代码。

namespace SignalRMVC.Hubs
{
    public class ChatHub:Hub
    {
        public void SendMessage(string message)
        {
            Clients.All.NewMessage(message);
        }
    }
}    
    var hubConfiguration = new HubConfiguration();
    hubConfiguration.EnableCrossDomain = true;
    RouteTable.Routes.MapHubs(hubConfiguration)

如果我遗漏了什么,请告诉我!我在部署我的应用程序时遇到了障碍,我无法进一步解决这个问题。

谢谢!

[更新] 我终于能够成功了。我使用的是较旧版本的Silverlight SignalR Client dll。我更新到新的。我还将代码更改为使用

hub = conn.CreateHubProxy("ChatHub"); 

而不是conn.CreateProxy(“SignalRWeb.Hubs.ChatHub”);

我还必须复制MVC SignalR根文件夹下的clientaccesspolicy.xml文件。这在localhost下工作得很好,但是当我将代码移动到IIS下的主机时,它会抛出错误必须先调用Start方法才能发送数据。

我正在开始连接,如:

  

conn.Start()。ContinueWith(task =&gt;         {             if(task.IsFaulted)             {

      }
      else
      {}
  });

然后点击按钮点击我的电话,

hub.Invoke("SendMessage", "Test");

这就是抛出此错误的地方。

我正在使用Windows身份验证和.Net 4.0,

谢谢!

0 个答案:

没有答案