微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SignalR协商成功,但挂在已连接的serverSentEvents传输上发起开始请求

如何解决SignalR协商成功,但挂在已连接的serverSentEvents传输上发起开始请求

我正在使用C#、. NET Framework 4.6.1,MVC 5.2.7.0和SignalR 2.2.2构建我的第一个SignalR Web应用程序。在我们公司的内部网上。该应用程序在使用IIS Express的本地计算机上运行良好,但是当我将应用程序移至我们的远程测试服务器(Windows 2012 R2,IIS 8.5)时,客户端会成功协商,但在启动启动请求时会无限期挂起。我在jquery.signalR-2.2.2.js中看到它在testapp / signalr / negotiate?clientProtocol = 1.5&etc上执行GET请求。此请求成功,并且我们已订阅中心,但是当它到达testapp / signalr / start?transport = serverSentEvent&clientProtocol&etc。时,它将无限期挂起,并且启动请求永远不会成功。我的脚本已打开我的日志记录,但是从此步骤中看不到任何特定的错误。我从其他帖子中看到他们收到500或404,但是在我逐步查看代码时看不到任何有用的信息。

要构建此应用程序,我以该示例(https://docs.microsoft.com/en-us/aspnet/signalr/overview/getting-started/tutorial-server-broadcast-with-signalr)为基准,但我从其他帖子中进行了一些细微调整,以使MVC版本正常工作。

对于我的客户端.cshtml文件,我添加了:

@section scripts{
   <script src="~/Scripts/jquery.signalR-2.2.2.js"></script>
   <script src="~/signalr/hubs"></script>
   <script src="~/Scripts/MyUpdaterScript.js"></script>
}

在我的App_Start / Startup.cs中,我有

[assembly: OwinStartup(typeof(TestApp.App_Start.Startup))]

namespace TestApp.Start
{
   public class Startup
   {
       app.MapSignalR();
   }
}

最重要的是,我将StockTicker示例逐字地部署到了远程测试服务器上,并且可以正常工作...启动请求成功,但我对为什么感到困惑。我在StockTicker示例和IIS上的MVC应用程序中都检查了应用程序设置,它们都是相同的。我确保将ExtensionlessUrlHandler选项全部启用。在IIS中设置应用程序的方式如下:

--Start Page
--REMOTETESTSERVER
  --Application Pools
  --Sites
    --Default Web Site
    --Test Web Site
      --testapp (*this is my MVC web app)
      --stocktickerapp (*this is the stock ticker example)

我在股票交易者示例和我的testapp上都通过jquery.signalR-2.2.2.js进行了调试,希望看看代码执行的位置是否存在明显差异,但没有运气。我想知道这个问题是否与常规股票Web应用程序和我的测试应用程序MVC有关?也许我错过了两者之间的基本概念。你们以前有没有经历过?

非常感谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。