ServiceStack和SignalR一起在同一个项目中

时间:2014-03-18 15:20:41

标签: asp.net servicestack signalr

这是一个微不足道的问题,但我在单个Asp.Net主机应用程序中使用SignalR和ServiceStack。

意思是,它是简单的Asp.Net空白应用程序,ServiceStack正在/上运行,它使用Razor显示默认页面。跑得很完美。

现在,我添加了SignalR asp.net主机。添加了启动类并创建了集中监听和广播聊天消息。

我只在默认页面中编写了客户端代码。现在,事情进展顺利。 Means,API和SignalR都在本地机器上运行。

现在,问题是,这是正确的做事方式吗?意味着,有两个不同的进程打到IIS。或者有什么方法可以将流程链接到单个流程。

甚至可以实时创建ServiceStack API的一部分。

如果需要进一步的信息,请告诉我。

2 个答案:

答案 0 :(得分:3)

是的,但是你现在无法在Owin上运行ServiceStack(据我所知)

因此,您需要在特定位置运行ServiceStack。

<location path="ssapi">

  <system.web>
    <httpHandlers>
      <add path="*" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*"/>
    </httpHandlers>
  </system.web>

  <system.webServer>
    <handlers>
      <add path="*" name="ServiceStack.Factory" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
    </handlers>
  </system.webServer>

</location>

您可能还需要从该位置删除owin / signalr内容的处理程序。

或者,您可以在特定路径上设置SignalR并从该路径中删除ServiceStack。

<location path="signalr">

  <system.web>
    <httpHandlers>
      <remove type="ServiceStack.HttpHandlerFactory, ServiceStack" />
    </httpHandlers>
  </system.web>

  <system.webServer>
    <handlers>
      <remove name="ServiceStack.Factory" />
    </handlers>
  </system.webServer>

</location>

答案 1 :(得分:2)

我知道问题集中在SignalR,但ServiceStackServer-Sent Events中添加了对v4.0.31的支持。基本上,这是一个非常长期的HTTP请求,它流向客户端,允许实时服务器&#34;推送&#34;

大多数现代浏览器都支持此功能,polyfills可用于支持IE返回8. ServiceStack还提供C# client