我开始在 Visual Studio 2012 上使用 SignalR,到目前为止我已经掌握了它的基本窍门,我引导自己完成了这个示例(您可以浏览页面中的代码)。我决定要在上述示例中添加一个 REST 服务,所以我向它添加了一个基本服务并且它起作用了。
我想采取的下一步是在服务和 SignalR 之间添加一个通信,所以根据示例向我展示的内容,我只需要通过我的项目中的 url 创建一个 HubConnection(在这种情况下,示例使用网址 http:localhost:4200)。您可以检查 WorkerRoleHubConfiguration 类,它有一个具有下一行的方法:
return RoleEnvironment.GetConfigurationSettingValue("GUI_URL");
其中 GUI_URL 是 http:localhost:4200。
在我的服务类中,我刚刚添加了一个具有以下内容的方法:
var url = RoleEnvironment.GetConfigurationSettingValue("http://localhost:4200");
try
{
HubConnection _connection = new HubConnection(url);
IHubProxy _hub = _connection.CreateProxy("SiteMonitR");
_hub.Invoke("displayResult");
}
catch (Exception ex)
{
error = ex.ToString();
}
但这会引发一个异常,这个。
我不明白为什么我可以以与示例相同的方式获取 url,因为我所做的一切都与在 Server 类上所做的一样。
我试图实现的目标是,当访问端点并且我的系统发生变化时,SignalR 会通知连接到它的客户端。
我希望任何人都可以帮助我了解我的工作出了什么问题。
编辑
我在这里添加了我的 ServiceConfiguration.Local.cscfg、我的 ServiceConfiguration.Cloud.cscfg 和 ServiceDefinition.csdef 文件作为参考,我认为问题应该就在那里,但老实说我不知道为什么这不起作用.
编辑 2
我在这一行收到以下异常var url = RoleEnvironment.GetConfigurationSettingValue("http://localhost:4200");
例外是:
SEHExcetion occurred. External component has thrown an exception.