Я работаю над вызовом COM-объекта из веб-формы внутри веб-приложения, работающего на платформе .Net 4.5.2. Я получаю следующее сообщение об ошибке при использовании директивы страницы AspCompat="true", которая требуется для вызова COM-объекта STA (однопоточного апартамента):
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:UseTaskFriendlySynchronizationContext = false в настройки приложения в файле web.config. Это разрешает первое исключение, но вызывает новое исключение, запрашивающее удаление параметра приложения, поскольку приложение также использует веб-сокеты (используемые SignalR):
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="true" в веб-форму и по-прежнему использовать WebSockets (используемые SignalR) в другом месте приложения .Net?