我有一个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,
谢谢!