这是一个微不足道的问题,但我在单个Asp.Net主机应用程序中使用SignalR和ServiceStack。
意思是,它是简单的Asp.Net空白应用程序,ServiceStack正在/
上运行,它使用Razor显示默认页面。跑得很完美。
现在,我添加了SignalR asp.net主机。添加了启动类并创建了集中监听和广播聊天消息。
我只在默认页面中编写了客户端代码。现在,事情进展顺利。 Means,API和SignalR都在本地机器上运行。
现在,问题是,这是正确的做事方式吗?意味着,有两个不同的进程打到IIS。或者有什么方法可以将流程链接到单个流程。
甚至可以实时创建ServiceStack API的一部分。
如果需要进一步的信息,请告诉我。
答案 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
,但ServiceStack
在Server-Sent Events中添加了对v4.0.31的支持。基本上,这是一个非常长期的HTTP请求,它流向客户端,允许实时服务器&#34;推送&#34;
大多数现代浏览器都支持此功能,polyfills可用于支持IE返回8. ServiceStack还提供C# client。