Я использую 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 или что-то с проектом.
Да, извините, что это 2008 R2. Кроме того, я знаю, что у меня .NET 4.5 на сервере – Inrego