记一次SignalR的部署错误问题

前不久的工作中,需要集成signalr和vue实现一个消息推送的前端展示页面,集成倒是很顺利,nuget和npm就解决了问题,但接下来的部署上遇到了几个问题,需要记录一下:

问题1 : 集成了redis缓存链接,在部署时未安装redis,导致signalr一直启动不起来,但又明确的提示错误。

            在开发时使用了redis缓存,并配置了signalr使用redis,部分方法在使用上没有用到redis,而部署时的业务不需要redis,因此未安装redis,运行时一直出现signalr连接不上的问题,

   查了很多资料都是signalr2.0 的版本的错误,最后尝试去掉

 //使用redis              GlobalHost.DependencyResolver.UseRedis(scaleoutConfiguration);

   果然是这里导致,页面可以正确的连接signalr服务器了,未用到redis,不能再启动时配置signalr使用redis

 

问题2 : 在本机IIS上发布运行正确,更换到其他人的电脑IIS发现不能链接signalR服务端,错误

vendor.js:45 GET http://localhost:6677/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22remindhub%22%7D%5D&_=1543892771079 404 (Not Found)send @ vendor.js:45d.extend.ajax @ vendor.js:45e.transports._logic.ajax @ vendor.js:54e.fn.e.start @ vendor.js:54F._.deferredStartHandler @ vendor.js:54d.event.dispatch @ vendor.js:45s.handle @ vendor.js:45
ISMS.js:1 Error: Error during negotiation request.(…)
ISMS.js:1 Could not connect
ISMS.js:1 disconnected
ISMS.js:1 reconnect
vendor.js:54 Uncaught Error: SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. <script src='/signalr/js'></script>.

 因为本机和部分电脑的发布是正常的,唯独单独的那台服务器运行会报错,推测是环境的问题,经过搜索资料发现需要增加以下配置

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>

试着在出错的服务器的web.config加上配置后,问题解决

 

posted @ 2018-12-04 12:02  vincentdong  阅读(4002)  评论(0编辑  收藏  举报