与主机

时间:2018-02-07 09:42:42

标签: c# asp.net signalr signalr-hub signalr.client

我来到这里寻求你的帮助。对于SignalR来说,我是一个相当新的人,经过几天的阅读和一次又一次的重试,我已经走到了尽头。开门见山。 我有一个解决方案,其中包括几个项目。给我带来麻烦的是Web和类库。 我在Web项目中安装了SignalR,在类库中安装了SignalR Client。 我的目标是跟踪和监视在类库中运行的长时间运行进程的进度。我从网络上正确地使用SignalR。 这是我想要调用的Hub方法:

public void SendProgress(string progressMessage, int progressCount, int totalItems)
    {
        var percentage = (progressCount * 100) / totalItems;

        Clients.All.sendProgress(progressMessage, percentage + "%");
    }

此外,我在类库(ImportProcess)中有一个方法,它包含一个foreach循环。在那个foreach循环里面我打电话:

public void SendProgress(string message, int currentItem, int totalItems)

SendProgress的主体是:

public void SendProgress(string message, int currentItem, int totalItems)
    {
        var hubConnection = new HubConnection("http://localhost:13310/");
        IHubProxy statementsHubProxy = hubConnection.CreateHubProxy("statementsHub");
        hubConnection.Credentials = CredentialCache.DefaultNetworkCredentials;
        hubConnection.Start().Wait();

        statementsHubProxy.Invoke("SendProgress", message, currentItem, totalItems);

    }

问题在于,由于我在foreach中调用SendProgress,我认为每次调用SendProgress时定义连接都是错误的。 我尝试将Connection属性包含在类的构造函数中。它工作但它只返回foreach的第一次迭代而忽略了所有其他的迭代。

我必须提一下,如果我在SendProgress方法中有连接属性,代码可以工作,我在cosnole中收到我想要的信息,但是我认为它不应该是那样的

这是调用休息服务的MVC控制器,休息服务又调用类库

public JsonResult AProcess()
    {
        _dataImportService.DataImportProcess("2018-02-27", "2018-02-28", "This is another parameter");
        return Json("", JsonRequestBehavior.AllowGet);
    }

请忽略DataImportProcess的参数,因为它们此时无关紧要。

这是我的Startup.cs

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.MapSignalR();
    }
}

我正在使用SignalR 2.2.2

编辑#1 我再次将连接属性包含在类的构造函数中:

static IHubProxy _proxy { get; set; }
    public ImportClass()
    {
        var hubConnection = new HubConnection("http://localhost:13310/");
        hubConnection.Credentials = CredentialCache.DefaultNetworkCredentials;
        IHubProxy statementsHubProxy = hubConnection.CreateHubProxy("statementsHub");
        _proxy = statementsHubProxy;
        hubConnection.Start().Wait();
    }

但没有运气。 SendProgress方法根本不发送任何更新。

非常感谢任何帮助。 最好的祝福, 康斯坦丁诺。

0 个答案:

没有答案