SignalR Sorunlarını Giderme

, Patrick Fleti tarafından

Warning

Bu belge, SignalR 'nin en son sürümü için değildir. ASP.NET Core SignalR'ye göz atın.

Bu belgede, SignalR ile ilgili genel sorun giderme sorunları açıklanmaktadır.

Bu konuda kullanılan yazılım sürümleri

Bu konunun önceki sürümleri

SignalR 'nin önceki sürümleri hakkında daha fazla bilgi için bkz. SignalR daha eski sürümleri.

Sorular ve açıklamalar

Lütfen bu öğreticiyi nasıl beğentireceğiniz ve sayfanın en altındaki açıklamalarda İyileştiğimiz hakkında geri bildirimde bulunun. Öğreticiyle doğrudan ilgili olmayan sorularınız varsa, bunları ASP.NET SignalR forumuna veya StackOverflow.com'e gönderebilirsiniz.

Bu belge aşağıdaki bölümleri içerir.

İstemci ve sunucu arasındaki Yöntemler sessizce başarısız oluyor

Bu bölümde, istemci ve sunucu arasındaki yöntem çağrısının anlamlı bir hata iletisi olmadan başarısız olması olası nedenleri açıklanmaktadır. Bir SignalR uygulamasında, sunucuda istemcinin uyguladığı yöntemler hakkında bilgi bulunmamaktadır; sunucu bir istemci yöntemini çağırdığında, yöntem adı ve parametre verileri istemciye gönderilir ve yöntem yalnızca sunucunun belirtildiği biçimde varsa yürütülür. İstemcide eşleşen bir yöntem bulunamazsa hiçbir şey olmaz ve sunucuda hiçbir hata iletisi oluşturulmaz.

Çağrılmayan istemci yöntemlerini daha fazla araştırmak için, sunucudan hangi çağrıların geldiğini görmek üzere Hub üzerinde Start yöntemini çağırmadan önce günlüğe kaydetmeyi açabilirsiniz. Bir JavaScript uygulamasında günlüğe kaydetmeyi etkinleştirmek için bkz. istemci tarafı günlük kaydını etkinleştirme (JavaScript istemci sürümü). Bir .NET istemci uygulamasında günlüğe kaydetmeyi etkinleştirmek için bkz. istemci tarafı günlük kaydını etkinleştirme (.NET istemci sürümü).

Yanlış yazılmış Yöntem, yanlış Yöntem imzası veya yanlış hub adı

Çağrılan bir yöntemin adı veya imzası, istemcide uygun bir yöntemle tam olarak eşleşmiyorsa, çağrı başarısız olur. Sunucu tarafından çağrılan yöntem adının istemcideki yöntemin adıyla eşleştiğini doğrulayın. Ayrıca, SignalR, JavaScript 'e uygun olduğu gibi Camel-cased yöntemlerini kullanarak hub proxy 'sini oluşturur, bu nedenle sunucu üzerinde SendMessage adlı bir yöntem istemci proxy 'sinde sendMessage çağırılır. Sunucu tarafı kodunuzda HubName özniteliğini kullanıyorsanız, kullanılan adın istemcide hub oluşturmak için kullanılan adla eşleştiğini doğrulayın. HubName özniteliğini kullanmazsanız, bir JavaScript istemcisindeki hub 'ın adının ChatHub yerine chatHub gibi bir Camel-cased olduğunu doğrulayın.

İstemcide yinelenen Yöntem adı

İstemcide yalnızca büyük/küçük harfe göre farklılık gösteren bir yinelenen Yöntem olmadığından emin olun. İstemci uygulamanızın sendMessageadlı bir yöntemi varsa, ayrıca SendMessage adlı bir yöntemin de olmadığını doğrulayın.

İstemcide eksik JSON ayrıştırıcısı

SignalR, sunucu ile istemci arasındaki çağrıları seri hale getirmek için bir JSON ayrıştırıcısı bulunmasını gerektirir. İstemcinizin yerleşik bir JSON ayrıştırıcısı yoksa (Internet Explorer 7 gibi), uygulamanıza bir tane eklemeniz gerekir. JSON ayrıştırıcısı buradanindirebilirsiniz.

Hub ve PersistentConnection söz dizimini karıştırma

SignalR iki iletişim modeli kullanır: hub 'Lar ve PersistentConnections. Bu iki iletişim modelini çağırma söz dizimi, istemci kodunda farklıdır. Sunucu kodunuzda bir hub eklediyseniz, tüm istemci kodunuzun uygun hub sözdizimini kullandığını doğrulayın.

JavaScript istemcisinde bir PersistentConnection oluşturan JavaScript istemci kodu

var myConnection = $.connection('/echo');

Bir JavaScript istemcisinde hub proxy oluşturan JavaScript istemci kodu

var myHub = $.connection.MyHub;

C#bir yolu PersistentConnection ile eşleyen sunucu kodu

RouteTable.Routes.MapConnection<MyConnection>("my", "/echo");

C#birden çok uygulamanız varsa, bir yolu hub 'a veya birden çok hub 'a eşleyen sunucu kodu

App.MapSignalR();

Abonelikler eklenmeden önce bağlantı başlatıldı

Sunucudan çağrılabilecek Yöntemler proxy 'ye eklendikten sonra hub 'ın bağlantısı başlatılırsa, iletiler alınmaz. Aşağıdaki JavaScript kodu hub 'ı düzgün olarak başlatmayacak:

Hub iletilerinin alınmasına izin vermeyecek hatalı JavaScript istemci kodu

var chat = $.connection.chatHub;
$.connection.hub.start().done(function () {
    chat.client.broadcastMessage = function (name, message) {...};
});

Bunun yerine, Start çağrılmadan önce Yöntem aboneliklerini ekleyin:

Bir hub 'a abonelikleri doğru şekilde ekleyen JavaScript istemci kodu

var chat = $.connection.chatHub;
chat.client.broadcastMessage = function (name, message) {...};
    $.connection.hub.start().done(function () {
        ...
    });

Hub proxy 'sinde eksik Yöntem adı

Sunucuda tanımlanan yöntemin istemcide abone olduğunu doğrulayın. Sunucu, yöntemi tanımlasa da, istemci proxy 'sine yine de eklenmelidir. Yöntemler istemci proxy 'sine aşağıdaki yollarla eklenebilir (metodun doğrudan hub değil, hub 'ın client üyesine eklendiğini unutmayın):

Bir hub proxy 'sine yöntemler ekleyen JavaScript istemci kodu

// Method added to proxy in JavaScript:
myHubProxy.server.method1 = function (param1, param2) {...};
//Multiple methods added to proxy in JavaScript using jQuery:
$.extend(myHubProxy.server, {
    method1: function (param1, param2) {...},
    method2: function (param3, param4) {...}
});

Hub veya hub yöntemleri ortak olarak bildirilmemiş

İstemcide görünür olması için, hub uygulamasının ve yöntemlerinin publicolarak bildirilmelidir.

Farklı bir uygulamadan hub 'a erişme

SignalR hub 'Larına yalnızca SignalR istemcileri uygulayan uygulamalar üzerinden erişilebilir. SignalR diğer iletişim kitaplıklarıyla (SOAP veya WCF Web Hizmetleri gibi) birlikte çalışamaz.) Hedef platformunuz için uygun bir SignalR istemcisi yoksa, sunucunun uç noktasına doğrudan erişemezsiniz.

Verileri el ile serileştirme

SignalR, yöntem parametrelerinizi seri hale getirmek için otomatik olarak JSON kullanır; bunu yapmanız gerekmez.

Uzak hub yöntemi, OnConnected işlevindeki istemcide yürütülmedi

Bu davranış tasarım gereğidir. OnDisconnected çağrıldığında, hub, daha fazla hub yönteminin çağrılmasına izin verilmeyen Disconnected durumuna zaten girdi.

C#Onbağlantısız olayda kodu doğru şekilde yürüten sunucu kodu

public class MyHub : Hub
{
    public override Task OnDisconnected()
    {
        // Do what you want here
        return base.OnDisconnected();
    }
}

OnDisconnect tutarlı zamanlarda tetikmedi

Bu davranış tasarım gereğidir. Bir Kullanıcı etkin bir SignalR bağlantısı olan bir sayfadan uzaklaşmaya çalıştığında, SignalR istemcisi sunucuya istemci bağlantısının durdurulduğunu bildirmek için bir en iyi çaba denemesi yapar. SignalR istemcisinin en iyi çaba denemesi sunucuya erişemediğinde, sunucu daha sonra OnDisconnected olayın tetikleneceği zamanda, yapılandırılabilir bir DisconnectTimeout sonra bağlantıyı atacaktır. SignalR istemcisinin en iyi çaba denemesi başarılı olursa OnDisconnected olay hemen başlatılır.

DisconnectTimeout ayarını ayarlama hakkında daha fazla bilgi için bkz. bağlantı ömrü olaylarını işleme: DisconnectTimeout.

Bağlantı sınırına ulaşıldı

Windows 7 gibi bir istemci işletim sisteminde IIS 'nin tam sürümünü kullanırken, 10 bağlantı sınırı uygulanır. İstemci işletim sistemi kullanırken, bu sınırı önlemek için IIS Express kullanın.

Etki alanları arası bağlantı düzgün ayarlanmadı

Bir etki alanı bağlantısı (SignalR URL 'SI barındırma sayfasıyla aynı etki alanında olmayan bir bağlantı) doğru ayarlanmamışsa, bağlantı hata iletisi olmadan başarısız olabilir. Etki alanları arası iletişimin nasıl etkinleştirileceği hakkında bilgi için bkz. etki alanları arası bağlantı oluşturma.

NTLM (Active Directory) kullanılarak bağlantı .NET istemcisinde çalışmıyor

Bağlantı düzgün yapılandırılmamışsa, bir .NET istemci uygulamasındaki bağlantı etki alanı güvenliği kullanan bir bağlantı başarısız olabilir. Bir etki alanı ortamında SignalR kullanmak için, önkoşul bağlantısı özelliğini aşağıdaki gibi ayarlayın:

C#bağlantı kimlik bilgilerini uygulayan istemci kodu

connection.Credentials = CredentialCache.DefaultCredentials;

Etkin olmayan bir istemciyi algılamak için IIS WebSockets to ping/pong olarak yapılandırma

SignalR sunucuları, istemcinin etkin olup olmadığını bilmez ve bağlantı hatalarıyla ilgili WebSocket 'den, diğer bir deyişle OnClose geri çağırmadan bildirimleri kullanır. Bu soruna yönelik bir çözüm, IIS WebSockets 'i sizin için ping/pong yapmak üzere yapılandırmaktır. Bu, bağlantınızın beklenmedik şekilde kesintiye karşı kapanmasını sağlar. Daha fazla bilgi için Bu StackOverflow Postbölümüne bakın.

Diğer bağlantı sorunları

Bu bölümde, bir bağlantı sırasında oluşan belirli belirtilerin veya hata iletilerinin nedenleri ve çözümleri açıklanmaktadır.

"Verilerin gönderilebilmesi için önce başlangıç çağrılmalıdır" hatası

Bu hata genellikle, kod, bağlantı başlatılmadan önce SignalR nesnelerine başvuruyorsa görülür. İşleyiciler için kablolanın ve sunucu üzerinde tanımlanan yöntemleri çağıran LIKE bağlantısı, bağlantı tamamlandıktan sonra eklenmelidir. Start çağrısının zaman uyumsuz olduğunu unutmayın, bu nedenle çağrıdan sonra kod, tamamlanmadan önce yürütülür. Bir bağlantının tamamen başlatıldıktan sonra işleyiciler eklemenin en iyi yolu, bunları başlangıç yöntemine parametre olarak geçirilen bir geri çağırma işlevine koymasıdır:

SignalR nesnelerine başvuran olay işleyicilerini doğru şekilde ekleyen JavaScript istemci kodu

$.connection.hub.start().done(function () {
    // Wire up Send button to call NewContosoChatMessage on the server.
    $('#newContosoChatMessage').click(function () {
        contosoChatHubProxy.server.newContosoChatMessage(
            $('#displayname').val(), $('#message').val());
            $('#message').val('').focus();
    });

Bu hata, SignalR nesnelerine hala başvurulurken bir bağlantı durdurulduğunda da görülür.

"301 kalıcı olarak taşındı" veya "302 geçici olarak taşındı" hatası

Bu hata, proje SignalR adlı bir klasör içeriyorsa, otomatik olarak oluşturulan ara sunucu ile müdahale edecek şekilde görülebilir. Bu hatayı önlemek için, uygulamanızda SignalR adlı bir klasör kullanmayın veya otomatik proxy oluşturmayı kapatın. Daha fazla ayrıntı için oluşturulan ara sunucuya ve ne işe yönelik olarak bakın.

.NET veya Silverlight istemcisinde "403 Yasak" hatası

Bu hata, etki alanları arası iletişimin düzgün şekilde etkinleştirilmediği etki alanı ortamlarında oluşabilir. Etki alanları arası iletişimin nasıl etkinleştirileceği hakkında bilgi için bkz. etki alanları arası bağlantı oluşturma. Bir Silverlight istemcisinde etki alanları arası bağlantı kurmak için bkz. Silverlight istemcilerinden etki alanları arası bağlantılar.

"404 bulunamadı" hatası

Bu sorunun çeşitli nedenleri vardır. Aşağıdakilerin tümünü doğrulayın:

  • Hub proxy adresi başvurusu doğru biçimlendirilmedi: Bu hata genellikle oluşturulan Merkez ara sunucu adresinin başvurusu doğru biçimlendirilmediyse görülür. Hub adresi başvurusunun düzgün şekilde yapıldığını doğrulayın. Ayrıntılar için dinamik olarak oluşturulan ara sunucuya nasıl başvurulacağını öğrenin.

  • Hub yolunu eklemeden önce uygulamaya rotalar ekleniyor: Uygulamanız başka rotalar kullanıyorsa, eklenen ilk yolun MapSignalRçağrısı olduğunu doğrulayın.

  • Uzantısız URL 'ler için güncelleştirme olmadan IIS 7 veya 7,5 kullanma: Sunucunun /signalr/hubshub tanımlarına erişim sağlayabilmesi için IIS 7 veya 7,5 ' nin kullanılması, uzantısız eşle URL 'lerinin güncelleştirilmesini gerektirir. Güncelleştirme buradabulunabilir.

  • IIS önbelleği güncel değil veya bozuk: Önbellek içeriğinin güncel olmadığından emin olmak için, önbelleği temizlemek için bir PowerShell penceresinde aşağıdaki komutu girin:

    net stop w3svc
    Remove-Item -Path "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\*" -Force -Recurse
    net start w3svc
    

"500 iç sunucu hatası"

Bu, çok çeşitli nedenleri olabilecek çok sayıda genel hatadır. Hatanın ayrıntıları sunucunun olay günlüğünde görünmelidir veya sunucu hata ayıklaması aracılığıyla bulunabilir. Daha ayrıntılı hata bilgileri, sunucuda ayrıntılı hataları etkinleştirerek elde edilebilir. Daha fazla bilgi için bkz. hub sınıfında hataları işleme.

Bu hata, bir güvenlik duvarı veya ara sunucu düzgün yapılandırılmamışsa, istek üstbilgilerinin yeniden yazılmasına neden olduğunda da yaygın olarak görülür. Çözüm, güvenlik duvarı veya proxy üzerinde 80 bağlantı noktası etkinleştirildiğinden emin olmak için kullanılır.

"Beklenmeyen yanıt kodu: 500"

Uygulamada kullanılan .NET Framework sürümü, Web. config dosyasında belirtilen sürümle eşleşmezse bu hata oluşabilir. Çözüm, .NET 4,5 'nin hem uygulama ayarlarında hem de Web. config dosyasında kullanıldığını doğrulamadır.

"TypeError: <hubType> tanımsız" hatası

MapSignalR çağrısı düzgün şekilde yapılmazlarsa bu hata oluşur. Daha fazla bilgi için bkz. SignalR ara yazılımını kaydetme ve SignalR seçeneklerini yapılandırma .

JsonSerializationException Kullanıcı kodu tarafından işlenmedi

Yöntemlerinizi göndereceğiniz parametrelerin serileştirilebilir olmayan türler (Dosya tutamaçları veya veritabanı bağlantıları gibi) içermediği doğrulayın. İstemciye gönderilmesini istemediğiniz bir sunucu tarafı nesnesi üzerinde Üyeler kullanmanız gerekiyorsa (güvenlik veya serileştirme nedenleri için) JSONIgnore özniteliğini kullanın.

"Protokol hatası: bilinmeyen aktarım" hatası

İstemci, SignalR 'nin kullandığı aktarımları desteklemiyorsa bu hata ortaya çıkabilir. SignalR ile hangi tarayıcıların kullanılabileceği hakkında bilgi için bkz. taşıma ve geri göndermeler .

"JavaScript hub ara sunucusu oluşturma devre dışı bırakıldı."

Bu hata, signalr/hubskonumundaki dinamik olarak oluşturulan ara sunucuya bir başvuru da dahil olmak üzere DisableJavaScriptProxies ayarlandıysa oluşur. Proxy 'yi el ile oluşturma hakkında daha fazla bilgi için bkz. oluşturulan ara sunucu ve sizin için ne yapar.

"Bağlantı KIMLIĞI yanlış biçimde" veya "etkin bir SignalR bağlantısı sırasında Kullanıcı kimliği değiştirilemiyor" hatası

Kimlik doğrulaması kullanılıyorsa ve bağlantı durdurulmadan önce istemci günlüğe kaydedildiğinde bu hata görünebilir. Çözüm, istemciyi günlüğe kaydetmeden önce SignalR bağlantısını durdurmaktır.

"Yakalanamayan hata: SignalR: jQuery bulunamadı. Lütfen SignalR. JS dosyasından önce jQuery 'e başvurulduğundan emin olun "hata

SignalR JavaScript istemcisi jQuery 'yi çalıştırmak için gereklidir. JQuery başvurusunun doğru olduğunu, kullanılan yolun geçerli olduğunu ve jQuery 'e başvurunun SignalR başvurusundan önce olduğunu doğrulayın.

"Yakalanamayan TypeError: '<özelliği>' tanımsız" hatası okunamıyor

Bu hata, jQuery veya hub proxy 'sinin düzgün şekilde başvurulmasına neden olur. JQuery ve hub proxy 'sine yönelik başvurunun doğru olduğunu, kullanılan yolun geçerli olduğunu ve jQuery 'e başvurunun, hub proxy 'sine yönelik başvurudan önce olduğunu doğrulayın. Hub proxy 'sine yönelik varsayılan başvuru aşağıdaki gibi görünmelidir:

Hub proxy 'sine doğru şekilde başvuran HTML istemci tarafı kodu

<script src="/signalr/hubs"></script>

"RuntimeBinderException Kullanıcı kodu tarafından işlenmemiş" hatası

Yanlış Hub.On aşırı yüklemesi kullanıldığında bu hata ortaya çıkabilir. Yöntemin bir dönüş değeri varsa, dönüş türü genel bir tür parametresi olarak belirtilmelidir:

İstemci üzerinde tanımlanan Yöntem (oluşturulan proxy olmadan)

MyHub.On<ReturnType>("MethodName", LocalMethod);

Bağlantı KIMLIĞI tutarsız veya sayfa yükleri arasındaki bağlantı sonları

Bu davranış tasarım gereğidir. Hub nesnesi sayfa nesnesinde barındırıldığından, sayfa yenilendiğinde hub yok edilir. Çok sayfalı bir uygulamanın, sayfa yüklemeleri arasında tutarlı olmaları için kullanıcılar ve bağlantı kimlikleri arasındaki ilişkilendirmeyi koruması gerekir. Bağlantı kimlikleri sunucuda ConcurrentDictionary nesne veya veritabanında depolanabilir.

"Değer null olamaz" hatası

İsteğe bağlı parametrelere sahip sunucu tarafı yöntemleri şu anda desteklenmiyor; isteğe bağlı parametre atlanırsa, yöntemi başarısız olur. Daha fazla bilgi için bkz. Isteğe bağlı parametreler.

"Firefox hata><adresi" sunucu ile bağlantı kuramıyor "

WebSocket aktarımının anlaşması başarısız olursa ve bunun yerine başka bir aktarım kullanılıyorsa, bu hata iletisi Firebug 'da görülebilir. Bu davranış tasarım gereğidir.

"Uzak sertifika, .NET istemci uygulamasındaki doğrulama yordamına göre geçersiz" hatası

Sunucunuz için özel istemci sertifikaları gerekiyorsa, istek yapılmadan önce bağlantı için bir X509Certificate ekleyebilirsiniz. Connection.AddClientCertificatekullanarak sertifikayı bağlantıya ekleyin.

Kimlik doğrulama zaman aşımına uğraydıktan sonra bağlantı düşer

Bu davranış tasarım gereğidir. Bağlantı etkin durumdayken kimlik doğrulama bilgileri değiştirilemez; kimlik bilgilerini yenilemek için bağlantı durdurulmalıdır ve yeniden başlatılmalıdır.

JQuery Mobile kullanılırken OnConnected iki kez çağırılır

jQuery Mobile 'ın initializePage işlevi, her sayfadaki betikleri yeniden yürütülmesine zorlar ve bu nedenle ikinci bir bağlantı oluşturur. Bu soruna yönelik çözümler şunlardır:

  • JavaScript dosyanızı önce jQuery Mobile başvurusunu ekleyin.
  • $.mobile.autoInitializePage = falseayarlayarak initializePage işlevini devre dışı bırakın.
  • Bağlantıyı başlatmadan önce sayfanın başlatılmasını bekleyin.

İletiler, gönderilen sunucu olayları kullanılarak Silverlight uygulamalarında gecikiyor

Silverlight üzerinde sunucu gönderme olayları kullanılırken iletiler gecikir. Bunun yerine uzun yoklama kullanılmasına zorlamak için, bağlantıyı başlatırken aşağıdakileri kullanın:

connection.Start(new LongPollingTransport());

Süresiz çerçeve protokolü kullanılarak "izin reddedildi"

Bu bilinen bir sorundur ve buradaaçıklanmıştır. Bu belirti, en son JQuery kitaplığı kullanılarak görülebilir; geçici çözüm, uygulamanızın JQuery 1.8.2 sürümüne indirgenmesini sağlar.

"InvalidOperationException: geçerli bir Web yuva isteği değil.

WebSocket protokolü kullanıldığında bu hata oluşabilir, ancak ağ proxy 'si istek üstbilgilerini değiştiriyor olabilir. Çözüm, proxy 'yi 80 numaralı bağlantı noktasında WebSocket 'ye izin verecek şekilde yapılandırmaktır.

"Özel durum: <Yöntem adı> yöntemi çözümlenemedi" istemci, sunucuda yöntemi çağırdığında

Bu hata, dizi gibi bir JSON yükünde keşfedilmemiş veri türlerinin kullanılmasına neden olabilir. Geçici çözüm, örneğin IList gibi JSON tarafından keşfedilen bir veri türünü kullanmaktır. Daha fazla bilgi için bkz. .net Client, dizi parametreleriyle hub yöntemlerini çağıramadı.

Derleme ve sunucu tarafı hataları

Aşağıdaki bölümde, derleyici ve sunucu tarafı çalışma zamanı hatalarına yönelik olası çözümler yer almaktadır.

Hub örneğine başvuru null

Her bağlantı için bir hub örneği oluşturulduğundan, kodunuzda bir hub örneği oluşturamazsınız. Hub 'ın dışında bir hub 'daki yöntemleri çağırmak için, hub bağlamına bir başvuru elde etmek üzere bkz. istemci yöntemlerini çağırma ve hub sınıfı dışından grupları yönetme .

HTTPContext. Current. Session null

Bu davranış tasarım gereğidir. SignalR, oturum durumunu etkinleştirmek çift yönlü mesajlaşmayı bozduğundan, ASP.NET oturum durumunu desteklemez.

Geçersiz kılınacak uygun yöntem yok

Eski belgelerden veya bloglardan kod kullanıyorsanız bu hatayı görebilirsiniz. Değiştirilmiş veya kullanım dışı olan yöntemlerin adlarına başvurduğunuzdan emin olun (OnConnectedAsyncgibi).

Hostcontexwesions. WebSocketServerUrl null

Bu davranış tasarım gereğidir. Bu üye kullanımdan kaldırılmıştır ve kullanılmamalıdır.

"' SignalR. hub ' adlı bir yol zaten yol koleksiyonunda" hata

Bu hata, uygulamanız tarafından MapSignalR iki kez çağrılırsa görülür. Bazı örnek uygulamalar doğrudan başlangıç sınıfında MapSignalR çağırır; diğer bir deyişle, çağrı bir sarmalayıcı sınıfında yapılır. Uygulamanızın her ikisini de yapamadığından emin olun.

WebSocket kullanılmıyor

Sunucunuzun ve istemcilerinizin WebSocket gereksinimlerini karşıladığını doğruladıysanız ( Desteklenen platformlar belgesinde listelenmiştir), sunucunuzda WebSocket 'i etkinleştirmeniz gerekir. Bu işlemi gerçekleştirmek için yönergeler buradabulunabilir.

$. bağlantı tanımsız

Bu hata, bir sayfadaki betiklerin düzgün şekilde yüklenmediğini veya hub proxy 'sine erişilemediğini veya yanlış erişildiğini gösterir. Sayfanızdaki betik başvurularının projenizde yüklü betiklerine karşılık geldiğini ve sunucu çalışırken bir tarayıcıda/SignalR/hub 'lara erişildiğini doğrulayın.

Dinamik bir ifade derlemek için gereken bir veya daha fazla tür bulunamıyor

Bu hata Microsoft.CSharp kitaplığının eksik olduğunu gösterir. Bunları derlemeler->Framework sekmesine ekleyin.

Çağıran duruma, Visual Basic veya kesin olarak belirlenmiş bir hub 'da, Istemci veya tür çağıranlarından erişilemez; "' String ' türünden ' ' String ' türüne dönüştürme geçerli değil" hatası

Visual Basic veya türü kesin belirlenmiş bir hub 'da arayan durumuna erişmek için, Clients.Calleryerine Clients.CallerState özelliğini (SignalR 2,1 ' de tanıtılan) kullanın.

Visual Studio sorunları

Bu bölümde, Visual Studio 'da karşılaşılan sorunlar açıklanmaktadır.

Betik belgeleri düğümü Çözüm Gezgini görünmüyor

Öğreticilerimizden bazıları hata ayıklama sırasında Çözüm Gezgini ' deki "betik belgeleri" düğümüne yönlendirir. Bu düğüm JavaScript hata ayıklayıcısı tarafından üretilir ve yalnızca Internet Explorer 'da tarayıcı istemcilerinde hata ayıklanırken görüntülenir; Chrome veya Firefox kullanılıyorsa düğüm görüntülenmez. JavaScript hata ayıklayıcı, Silverlight hata ayıklayıcısı gibi başka bir istemci hata ayıklayıcısı çalışıyorsa de çalışmaz.

SignalR, Visual Studio 2008 veya önceki sürümlerde çalışmıyor

Bu davranış tasarım gereğidir. SignalR için .NET Framework 4 veya üzeri gerekir; Bu, SignalR uygulamalarının Visual Studio 2010 veya sonraki sürümlerde geliştirilmesi gerekir. SignalR sunucu bileşeni .NET Framework 4,5 gerektirir.

IIS sorunları

Bu bölüm Internet Information Services sorunları içerir.

SignalR, Visual Studio geliştirme sunucusunda çalışmaktadır, ancak IIS 'de yoktur

SignalR IIS 7,0 ve 7,5 ' de desteklenir, ancak uzantısız URL 'Ler için destek eklenmelidir. Uzantısız URL 'Ler için destek eklemek için bkz. https://support.microsoft.com/kb/980368

SignalR 'nin sunucuya ASP.NET yüklenmesi gerekir (ASP.NET IIS 'de varsayılan olarak yüklü değildir). ASP.NET yüklemek için bkz. ASP.net İndirmeleri.

Microsoft Azure sorunları

Bu bölüm Microsoft Azure sorunları içerir.

Azure çalışan rolünde SignalR barındırırken FileLoadException

SignalR 'yi bir Azure Worker rolünde barındırmak, "Microsoft. Owin, Version = 2.0.0.0" dosyası veya derlemesi yüklenemedi "özel durumuna neden olabilir. Bu, NuGet ile ilgili bilinen bir sorundur; Bağlama yeniden yönlendirmeleri, Azure çalışan rolü projelerinde otomatik olarak eklenmez. Bunu onarmak için bağlama yeniden yönlendirmelerini el ile ekleyebilirsiniz. Aşağıdaki satırları, çalışan rolü projeniz için app.config dosyasına ekleyin.

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.2.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.2.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

Konu adları değiştirildikten sonra iletiler Azure arkadüzleminden alınmaz

Azure arkadüzlemi tarafından kullanılan konular dahili olarak saklanır; Kullanıcı tarafından yapılandırılabilir olmaları amaçlanmamıştır.