2013-09-29 1 views
3

Я использую SignalR 2.0.0-rc1 и имею некоторые проблемы при развертывании его на моем сервере.Метод вызова вызова SignalR работает локально в VS, но не на IIS 7.5

сторона

сервера я определяю хаб (я также попытался с ничтожным типом возвращаемого, но это причиняло мне исключение асинхронного: https://github.com/SignalR/SignalR/issues/656)

public class IpnHub : Hub 
{ 
    // This is the method that never gets called on IIS 
    public async Task<bool> CheckPayKey(string payKey) 
    { 
     bool payKeyValid; 
     // code that sets payKeyValid to true or false 

     await Clients.Caller.checkPayKey((payKeyValid)); 
     return payKeyValid; 
    } 
} 

Я картирование концентраторов в классе запуска (и добавил его в web.config и убедился, что она выполняется):

public partial class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     app.MapSignalR(); 
     ConfigureAuth(app); 
    } 
} 

на моей странице HTML теста, у меня есть следующий JS код:

<script type="text/javascript"> 
    var thisPayKey = 'thisisapaykey'; 
    $(function() { 
     var ipnHub = $.connection.ipnHub; 

     ipnHub.client.checkPayKey = function(isValid) { 
      alert(isValid); 
     }; 
     $.connection.hub.logging = true; 
     $.connection.hub.start().done(function() { 
      ipnHub.server.checkPayKey(thisPayKey); 
     }); 
    }); 
</script> 

Журнал говорит:

[03:06:25 GMT+0200 (Romance Daylight Time)] SignalR: Client subscribed to hub 'ipnhub'. 
[03:06:25 GMT+0200 (Romance Daylight Time)] SignalR: Negotiating with '/signalr/negotiate?connectionData=%5B%7B%22name%22%3A%22ipnhub%22%7D%5D&clientProtocol=1.3'. 
[03:06:25 GMT+0200 (Romance Daylight Time)] SignalR: Attempting to connect to SSE endpoint 'http://bothaven.com/signalr/connect?transport=serverSentEvents&connectionTo…SqI%2B%2FXvBpv&connectionData=%5B%7B%22name%22%3A%22ipnhub%22%7D%5D&tid=10'. 
[03:06:25 GMT+0200 (Romance Daylight Time)] SignalR: EventSource connected. 
[03:06:25 GMT+0200 (Romance Daylight Time)] SignalR: Now monitoring keep alive with a warning timeout of 13333.333333333332 and a connection lost timeout of 20000. 

Я проверил стельку, как предложено в этом посте: https://stackoverflow.com/a/16905370/1727447 И все его испытаний вернуть статус 200.

При запуске приложения в Visual Studio и я открываю test html page - я мгновенно получаю всплывающее окно с логическим возвратом с сервера. Кроме того, следующая строка отображается в журнале консоли в дополнение к тем, что выше:

[03:16:04 GMT+0200 (Romance Daylight Time)] SignalR: Triggering client hub event 'checkPayKey' on hub 'IpnHub'. 

Я проверил - и даже не первый, как метода CheckPayKey вызывается на стороне сервера, когда он на моем МИБ. Это iis 7.5 работает на Windows Server 2008 R2, если это имеет значение. Я уже несколько часов стучаю в эту голову, и я просто не могу понять, что случилось.

EDIT: Ради того, чтобы пытаться найти проблему, я попытался создать новый проект VS и создал свой собственный маленький образец, который я предоставил здесь - а затем я создал новый веб-сайт на IIS с новым приложением бассейн. Когда я опубликовал это в IIS, это сработало. Затем я попытался опубликовать полный веб-сайт, который использует этот код на одном и том же веб-сайте IIS, и это не сработало. Это говорит мне о том, что это должна быть проблема web.config или что-то с проектом.

ответ

0

В Windows Server 2008 версия IIS в версии 7.0 и .Net 4.5 не является встроенным компонентом, для SignalR 2.0 требуется .Net 4.5, поэтому вам необходимо установить .Net 4.5.

В Windows Server 2008 R2 в версии IIS версии 7,5, просто интересно, является ли ваш сервер Windows Server 2008 R2? Я попытался воспроизвести его на веб-сайте IIS в Windows Server 2008 R2, он работает.

+0

Да, извините, что это 2008 R2. Кроме того, я знаю, что у меня .NET 4.5 на сервере – Inrego