2017-01-09 18 views
1

Я работаю над вызовом COM-объекта из веб-формы внутри веб-приложения, работающего на базе .Net 4.5.2. Я получаю следующее сообщение об ошибке при использовании AspCompat = «истинная» страницы директивы, которая необходима, чтобы вызвать СТО (однопоточных квартиру) 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. 

Сообщения об ошибке говорится, мне нужно включить Сеть САШИ : UseTaskFriendlySynchronizationContext = false в настройках приложения в файле web.config. Это решает первое исключение, но вызывает новое исключение будет брошено, запрашивая настройки приложения будут удалены, так как приложение использует WebSockets (используемые 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?

ответ

0

Да. SignalR - это только клиентская библиотека JavaScript, а также обработчик на стороне сервера (а не одна страница ASP.NET). WebSockets, с другой стороны, поддерживаются только в Windows 8 или выше, и должна быть установлена ​​функция Windows.

+0

Спасибо за ответ. Чтобы уточнить этот вопрос, я пытаюсь определить, можно ли использовать WebSockets (используемый Signal R) и директиву AspCompat = «true» в том же приложении, поскольку Asp.Net требует установки aspnet: UseTaskFriendlySynchronizationContext для существования один, но удаляться для другого. –

+0

Да, они могут. Ничего общего с этим. –