2017-01-09 66 views
1

我正在从.net 4.5.2框架上运行的Web应用程序中的Web窗体调用COM对象。.Net应用程序是否可以同时支持AspCompat指令和WebSockets(由SignalR使用)?

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: <%@ Page AspCompat="true" %> and <httpRuntime apartmentThreading="true" /> are unsupported in the current application configuration. To work around this, add the following configuration switch in Web.config: 
<appSettings> 
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="false" /> 
</appSettings> 
For more information, see http://go.microsoft.com/fwlink/?LinkId=252465. 

该错误消息指出我需要包括ASPNET:我使用AspCompat =“真”页面指令,这是需要调用一个STA(单线程单元)COM对象时收到以下错误消息:在web.config文件的应用程序设置中,UseTaskFriendlySynchronizationContext = false。这解决了第一个例外,但会导致一个新的异常被抛出,请求应用程序设置中删除,因为该应用程序还使用(通过SignalR使用)的WebSockets:

Exception information: 
    Exception type: InvalidOperationException 
    Exception message: WebSockets is unsupported in the current application configuration. To work around this, remove the following configuration switch in Web.config: 
<appSettings> 
    <add key="aspnet:UseTaskFriendlySynchronizationContext" /> 
</appSettings> 
For more information, see http://go.microsoft.com/fwlink/?LinkId=252465. 
    at System.Web.Util.SynchronizationContextUtil.ValidateMode(SynchronizationContextMode currentMode, SynchronizationContextMode requiredMode, String specificErrorMessage) 
    at System.Web.HttpContext.AcceptWebSocketRequest(Func`2 userFunc, AspNetWebSocketOptions options) 
    at Microsoft.AspNet.SignalR.Transports.WebSocketTransport.AcceptWebSocketRequest(Func`2 callback) 
    at Microsoft.AspNet.SignalR.PersistentConnection.ProcessRequestPostGroupRead(HostContext context, String groupsToken) 
    at Microsoft.AspNet.SignalR.TaskAsyncHelper.FromMethod[T1,T2,T3,TResult](Func`4 func, T1 arg1, T2 arg2, T3 arg3) 

是否有可能包括AspCompat =”真正的“页面指令,并仍然使用.Net应用程序中其他地方的W​​ebSockets(由SignalR使用)?

回答

0

是的。 SignalR只是一个客户端JavaScript库和服务器端的处理程序(不是同一个ASP.NET页面)。 另一方面,WebSockets仅在Windows 8或更高版本中受支持,并且必须安装Windows功能。

+0

感谢您的回复。为了澄清这个问题,我试图确定WebSockets(由Signal R使用)和AspCompat =“true”页指令是否可以在同一个应用程序中使用,因为Asp.Net需要aspnet:UseTaskFriendlySynchronizationContext应用程序设置来存在一个,但为另一个被删除。 –

+0

是的,他们可以。与此无关。 –

相关问题