【发布时间】:2015-09-18 20:34:19
【问题描述】:
我创建了一个 SignalR 自托管应用程序,但无法通过浏览器或 Windows Phone(这是我的客户端)访问。我遵循了几个教程,他们几乎说同样的话,我相信错误出在我的网络配置上,还请注意,当您运行项目时,IIS 不会触发(不确定是否还需要)。
信号服务器:
class Program : Hub
{
private static HubConnection Connection { get; set; }
private static IHubProxy HubProxy { get; set; }
const string Url = "http://*:8080";
static void Main(string[] args)
{
// This will *ONLY* bind to localhost, if you want to bind to all addresses
// use http://*:8080 to bind to all addresses.
// See http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx
// for more information.
using (WebApp.Start(Url))
{
Console.WriteLine("Servidor rodando em {0}", Url);
Console.ReadLine();
}
}
private static void Connection_Closed()
{
Connection = null;
}
}
class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
错误是:
连接尚未建立。
我的客户类:
public class SignalRService : PhoneApplicationPage
{
public String UserName { get; set; }
public IHubProxy HubProxy { get; set; }
private const string ServerURI = "http://localhost:8080";
public HubConnection Connection { get; set; }
public SignalRService()
{
UserName = "Luizaooo";
ConnectAsync();
}
public void ObterAtualizacoesProdutos()
{
ProdutoService produtoService = new ProdutoService();
var dataHora = produtoService.ObterDataHoraUltimaAtualizacao();
HubProxy.Invoke("ObterAtualizacoes", dataHora);
MessageBox.Show("passou");
}
private async void ConnectAsync()
{
Connection = new HubConnection(ServerURI);
Connection.Closed += Connection_Closed;
HubProxy = Connection.CreateHubProxy("ProdutoHub");
HubProxy.On<List<Produto>>("AtualizarProdutos", (ListaDeProdutos) =>
this.Dispatcher.BeginInvoke(() =>
{
var a = ListaDeProdutos;
}));
try
{
await Connection.Start();
}
catch (Exception e)
{
MessageBox.Show(e.Message);
return;
}
}
private void Connection_Closed()
{
Connection = null;
}
}
【问题讨论】:
标签: c# signalr signalr-hub signalr.client