Aracılığıyla paylaş


SignalR Sorunlarını Giderme

Patrick Fletcher tarafından

Uyarı

Bu belgeler SignalR'nin en son sürümüne yönelik değildir. SignalR ASP.NET Core göz atın.

Bu belgede SignalR ile ilgili yaygın 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 bilgi için bkz. SignalR Eski Sürümleri.

Sorular ve yorumlar

Lütfen bu öğreticiyi nasıl beğendiğiniz ve sayfanın altındaki yorumlarda neleri geliştirebileceğimiz hakkında geri bildirim bırakın. Öğreticiyle doğrudan ilgili olmayan sorularınız varsa bunları ASP.NET SignalR forumunu veya StackOverflow.com gönderebilirsiniz.

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

İstemci ve sunucu arasında çağırma yöntemleri sessizce başarısız oluyor

Bu bölümde, istemci ile sunucu arasındaki yöntem çağrısının anlamlı bir hata iletisi olmadan başarısız olmasına neden olabilecek durumlar açıklanmaktadır. SignalR uygulamasında sunucunun istemcinin uyguladığı yöntemler hakkında hiçbir bilgisi yoktur; sunucu bir istemci yöntemi çağırdığında, yöntem adı ve parametre verileri istemciye gönderilir ve yöntem yalnızca sunucunun belirttiği biçimde mevcutsa yürütülür. İstemcide eşleşen bir yöntem bulunamazsa hiçbir şey olmaz ve sunucuda hata iletisi gönderilmez.

çağrılmayan istemci yöntemlerini daha fazla araştırmak için, sunucudan gelen çağrıları görmek için hub'da başlangıç yöntemini çağırmadan önce günlüğe kaydetmeyi açabilirsiniz. JavaScript uygulamasında günlüğe kaydetmeyi etkinleştirmek için bkz. İstemci tarafı günlüğünü etkinleştirme (JavaScript istemci sürümü). Bir .NET istemci uygulamasında günlüğü etkinleştirmek için bkz. İstemci tarafı günlüğe kaydetmeyi etkinleştirme (.NET İstemci sürümü).

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

Çağrılan yöntemin adı veya imzası istemcideki 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şdiğini doğrulayın. SignalR ayrıca JavaScript'te uygun olduğu gibi, hub ara sunucusunu, javascript'te uygun olan camel-cased yöntemlerini kullanarak oluşturur, bu nedenle sunucuda çağrılan SendMessage bir yöntem istemci proxy'sinde çağrılır sendMessage . Sunucu tarafı kodunuzda özniteliğini HubName kullanıyorsanız, kullanılan adın istemcide hub'ı oluşturmak için kullanılan adla eşleşip eşleşmediğini doğrulayın. özniteliğini HubName kullanmıyorsanız, Bir JavaScript istemcisindeki hub'ın adının, ChatHub yerine chatHub gibi bir deve örneği 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 yinelenen bir yönteminiz olmadığını doğrulayın. İstemci uygulamanızın adlı sendMessagebir yöntemi varsa, adlı SendMessage 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ının mevcut olmasını gerektirir. İstemcinizin yerleşik JSON ayrıştırıcısı yoksa (Internet Explorer 7 gibi), uygulamanıza bir tane eklemeniz gerekir. JSON ayrıştırıcısını buradan indirebilirsiniz.

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

SignalR iki iletişim modeli kullanır: Hubs ve PersistentConnections. Bu iki iletişim modeli çağırma söz dizimi istemci kodunda farklıdır. Sunucu kodunuza bir hub eklediyseniz, tüm istemci kodunuzun doğru hub söz dizimini kullandığını doğrulayın.

JavaScript istemcisinde PersistentConnection oluşturan JavaScript istemci kodu

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

JavaScript istemcisinde Hub Proxy'si oluşturan JavaScript istemci kodu

var myHub = $.connection.MyHub;

Bir yolu PersistentConnection'a eşleyen C# sunucu kodu

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

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

App.MapSignalR();

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

Hub'ın bağlantısı sunucudan çağrılabilen yöntemler ara sunucuya eklenmeden önce başlatılırsa, iletiler alınmaz. Aşağıdaki JavaScript kodu hub'ı düzgün başlatmaz:

Hubs iletilerinin alınmasına izin vermeyecek yanlış JavaScript istemci kodu

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

Bunun yerine, Başlat'ı çağırmadan önce yöntem aboneliklerini ekleyin:

Hub'a doğru şekilde abonelik ekleyen JavaScript istemci kodu

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

Hub proxy'sinde yöntem adı eksik

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

Hub ara sunucusuna yöntem 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) {...}
});

Genel olarak bildirilmeyen hub veya hub yöntemleri

İstemcide görünür olması için hub uygulamasının ve yöntemlerinin olarak publicbildirilmesi gerekir.

Hub'a farklı bir uygulamadan erişme

SignalR Hubs'a yalnızca SignalR istemcilerini uygulayan uygulamalar aracılığıyla erişilebilir. SignalR, diğer iletişim kitaplıklarıyla (SOAP veya WCF web hizmetleri gibi) birlikte çalışamaz. Hedef platformunuz için kullanılabilir SignalR istemcisi yoksa, sunucunun uç noktasına doğrudan erişemezsiniz.

Verileri el ile seri hale getirme

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

Uzak Hub yöntemi OnDisconnected işlevindeki istemcide yürütülmedi

Bu davranış tasarım gereğidir. Çağrıldığında OnDisconnected hub zaten duruma girmiştir ve başka hub yöntemlerinin Disconnected çağrılmasına izin vermez.

OnDisconnected olayında kodu doğru yürüten C# sunucu kodu

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

OnDisconnect tutarlı zamanlarda tetiklenmiyor

Bu davranış tasarım gereğidir. Kullanıcı etkin SignalR bağlantısı olan bir sayfadan uzaklaşmaya çalıştığında SignalR istemcisi, istemci bağlantısının durdurulacağını sunucuya bildirmek için elinden geleni yapar. SignalR istemcisinin en iyi çaba denemesi sunucuya ulaşamazsa, sunucu daha sonra yapılandırılabilir DisconnectTimeout bir işlemden sonra bağlantıyı atacak ve bu sırada OnDisconnected olay tetiklenecektir. SignalR istemcisinin en iyi çaba denemesi başarılı olursa olay OnDisconnected hemen tetiklenir.

Ayarı ayarlama DisconnectTimeout hakkında 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 bunun yerine IIS Express kullanın.

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

Etki alanları arası bir bağlantı (SignalR URL'sinin barındırma sayfasıyla aynı etki alanında olmadığı bir bağlantı) doğru ayarlanmadıysa, bağlantı bir hata iletisi olmadan başarısız olabilir. Etki alanları arası iletişimi etkinleştirme hakkında bilgi için bkz. Etki alanları arası bağlantı kurma.

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

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

Bağlantı kimlik bilgilerini uygulayan C# istemci kodu

connection.Credentials = CredentialCache.DefaultCredentials;

Iis web yuvalarını ping/pong olarak yapılandırarak ölü bir istemciyi algılama

SignalR sunucuları istemcinin ölü olup olmadığını bilmez ve bağlantı hataları, yani geri çağırma için temel websocket'ten gelen bildirime OnClose güvenir. Bu sorunun çözümlerinden biri, ping/pong'u sizin için yapmak üzere IIS web yuvalarını yapılandırmaktır. Böylece bağlantınız beklenmedik şekilde kesilirse kapatılır. Daha fazla bilgi için bu stackoverflow gönderisini inceleyin.

Diğer bağlantı sorunları

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

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

Bu hata genellikle bağlantı başlatılmadan önce kod SignalR nesnelerine başvuruda bulunursa görülür. İşleyiciler ve sunucuda tanımlanan çağrı yöntemlerini çağıran benzerleri için kablo bağlantısı, bağlantı tamamlandıktan sonra eklenmelidir. çağrısının Start zaman uyumsuz olduğunu, bu nedenle çağrıdan sonraki kodun tamamlanmadan önce yürütülebileceğini unutmayın. Bağlantı tamamen başlatıldıktan sonra işleyici eklemenin en iyi yolu, bunları start yöntemine parametre olarak geçirilen bir geri çağırma işlevine yerleştirmektir:

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();
    });

SignalR nesnelerine başvurulmaya devam ederken bağlantı durdurulursa da bu hata görüntülenir.

"301 Kalıcı Olarak Taşındı" veya "302 Geçici Olarak Taşındı" hatası

Bu hata, proje otomatik olarak oluşturulan ara sunucuya müdahale edecek SignalR adlı bir klasör içeriyorsa görülebilir. Bu hatayı önlemek için, uygulamanızda adlı SignalR bir klasör kullanmayın veya otomatik ara sunucu oluşturmayı kapatmayın. Daha fazla ayrıntı için bkz. Oluşturulan Ara Sunucu ve sizin için ne yapar .

.NET veya Silverlight istemcisinde "403 Yasak" hatası

Bu hata, etki alanları arası iletişimin düzgün etkinleştirilmediği etki alanları arası ortamlarda oluşabilir. Etki alanları arası iletişimi etkinleştirme hakkında bilgi için bkz. Etki alanları arası bağlantı kurma. 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çimlendirilmemiş: Bu hata genellikle oluşturulan hub proxy adresine yapılan başvurunun doğru biçimlendirilmemesi durumunda görülür. Hub adresine başvurunun düzgün yapıldığını doğrulayın. Ayrıntılar için bkz. Dinamik olarak oluşturulan ara sunucuya başvurma .

  • Hub yolunu eklemeden önce uygulamaya yol ekleme: Uygulamanız başka yollar kullanıyorsa, eklenen ilk yolun çağrısı MapSignalRolduğunu doğrulayın.

  • Uzantısız URL'ler için güncelleştirme olmadan IIS 7 veya 7.5 kullanma: IIS 7 veya 7.5'in kullanılması, sunucunun konumundaki /signalr/hubshub tanımlarına erişim sağlayabilmesi için uzantısız URL'ler için bir güncelleştirme gerektirir. Güncelleştirme burada bulunabilir.

  • IIS önbelleği güncel değil veya bozuk: Önbellek içeriğinin güncel olmadığını doğrulamak için, önbelleği temizlemek için bir PowerShell penceresine 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 İç Sunucu Hatası"

Bu, çok çeşitli nedenleri olabilecek çok genel bir hatadır. Hatanın ayrıntıları sunucunun olay günlüğünde görünmelidir veya sunucuda hata ayıklama yoluyla bulunabilir. Sunucuda ayrıntılı hatalar açılarak daha ayrıntılı hata bilgileri elde edilebilir. Daha fazla bilgi için bkz. Hub sınıfındaki hataları işleme.

Bu hata genellikle bir güvenlik duvarı veya ara sunucu düzgün yapılandırılmamışsa ve istek üst bilgilerinin yeniden yazılmasını sağlarsa da görülür. Çözüm, güvenlik duvarında veya ara sunucuda 80 numaralı bağlantı noktasının etkinleştirildiğinden emin olmaktır.

"Beklenmeyen yanıt kodu: 500"

Uygulamada kullanılan .NET Framework sürümü Web.Config'de belirtilen sürümle eşleşmiyorsa bu hata oluşabilir. Çözüm, .NET 4.5'in hem uygulama ayarlarında hem de Web.Config dosyasında kullanıldığını doğrulamaktır.

"TypeError: <hubType> tanımlanmamış" hatası

çağrısı MapSignalR düzgün yapılmazsa 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şlenmemiş

Yöntemlerinize gönderdiğiniz parametrelerin seri hale getirilemeyen türler (dosya tanıtıcıları veya veritabanı bağlantıları gibi) içermediğini doğrulayın. İstemciye gönderilmesini istemediğiniz bir sunucu tarafı nesnesinde üyeleri kullanmanız gerekiyorsa (güvenlik veya serileştirme nedeniyle) özniteliğini JSONIgnore kullanın.

"Protokol hatası: Bilinmeyen aktarım" hatası

İstemci SignalR'nin kullandığı aktarımları desteklemiyorsa bu hata oluşabilir. SignalR ile hangi tarayıcıların kullanılabileceğini öğrenmek için bkz . Aktarımlar ve Geri Dönüşler .

"JavaScript Hub proxy oluşturma devre dışı bırakıldı."

Bu hata, konumunda dinamik olarak oluşturulan ara signalr/hubssunucuya başvuru da dahil edilirken ayarlanırsa DisableJavaScriptProxies oluşur. Proxy'yi el ile oluşturma hakkında daha fazla bilgi için bkz. Oluşturulan ara sunucu ve sizin için yaptıkları.

"Bağlantı kimliği yanlış biçimde" veya "Etkin SignalR bağlantısı sırasında kullanıcı kimliği değiştirilemez" hatası

Kimlik doğrulaması kullanılıyorsa ve bağlantı durdurulmadan önce istemci oturumu kapatılırsa bu hata görülebilir. Çözüm, istemcinin oturumunu kapatmadan önce SignalR bağlantısını durdurmaktır.

"Yakalanmayan Hata: SignalR: jQuery bulunamadı. SignalR.js dosyasından önce jQuery'ye başvuruldığından emin olun" hatası

SignalR JavaScript istemcisinin çalışması için jQuery gerekir. jQuery başvurunuzun doğru olduğunu, kullanılan yolun geçerli olduğunu ve jQuery başvurusunun SignalR başvurusundan önce olduğunu doğrulayın.

"Uncaught TypeError: Undefined'in '<property>' özelliği okunamıyor" hatası

Bu hata, jQuery veya hubs proxy'sine düzgün başvurulmamasından kaynaklanır. jQuery ve hubs proxy'sine başvurunuzun doğru olduğunu, kullanılan yolun geçerli olduğunu ve jQuery başvurusunun hubs proxy'sine başvurudan önce olduğunu doğrulayın. Hubs proxy'sine yönelik varsayılan başvuru aşağıdaki gibi görünmelidir:

Hubs proxy'sine doğru başvuruda bulunan HTML istemci tarafı kodu

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

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

Yanlış aşırı yükleme Hub.On kullanıldığında bu hata oluşabilir. Yöntemin dönüş değeri varsa, dönüş türü genel tür parametresi olarak belirtilmelidir:

İstemcide tanımlanan yöntem (oluşturulan ara sunucu olmadan)

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

Bağlantı kimliği tutarsız veya sayfa yüklemeleri 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ı olması için kullanıcılar ve bağlantı kimlikleri arasındaki ilişkiyi koruması gerekir. Bağlantı kimlikleri sunucuda bir ConcurrentDictionary nesnede veya veritabanında depolanabilir.

"Değer null olamaz" hatası

İsteğe bağlı parametrelere sahip sunucu tarafı yöntemleri şu anda desteklenmemektedir; İsteğe bağlı parametre atlanırsa yöntem başarısız olur. Daha fazla bilgi için bkz . İsteğe Bağlı Parametreler.

Firebug'da "Firefox adresteki <>sunucuyla bağlantı kuramıyor" hatası

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

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

Sunucunuz özel istemci sertifikaları gerektiriyorsa, istek yapılmadan önce bağlantıya bir x509certificate ekleyebilirsiniz. kullanarak Connection.AddClientCertificatesertifikayı bağlantıya ekleyin.

Kimlik doğrulaması zaman aşımına uğradıktan sonra bağlantı düşüyor

Bu davranış tasarım gereğidir. Bağlantı etkinken kimlik doğrulaması kimlik bilgileri değiştirilemez; kimlik bilgilerini yenilemek için bağlantı durdurulmalı 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ülmeye zorlar ve böylece ikinci bir bağlantı oluşturur. Bu sorunun çözümleri şunlardır:

  • JavaScript dosyanızdan önce jQuery Mobile'a başvuruyu ekleyin.
  • initializePage ayarını $.mobile.autoInitializePage = falseyaparak işlevi devre dışı bırakın.
  • Bağlantıyı başlatmadan önce sayfanın başlatılmasının tamamlanmasını bekleyin.

Sunucu Tarafından Gönderilen Olaylar kullanılarak Silverlight uygulamalarında iletiler geciktiriliyor

Silverlight'ta sunucu tarafından gönderilen olaylar kullanılırken iletiler geciktirilir. Bunun yerine uzun yoklamayı kullanmaya zorlamak için bağlantıyı başlatırken aşağıdakileri kullanın:

connection.Start(new LongPollingTransport());

Forever Frame protokolü kullanılarak "İzin Reddedildi"

Bu bilinen bir sorundur ve burada açıklanmıştır. Bu belirti en son JQuery kitaplığı kullanılarak görülebilir; Geçici çözüm, uygulamanızı JQuery 1.8.2'ye düşürmektir.

"InvalidOperationException: Geçerli bir web yuvası isteği değil.

WebSocket protokolü kullanılıyorsa ancak ağ ara sunucusu istek üst bilgilerini değiştiriyorsa bu hata oluşabilir. Çözüm, proxy'yi 80 numaralı bağlantı noktasında WebSocket'e izin verecek şekilde yapılandırmaktır.

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

Bu hata, Dizi gibi bir JSON yükünde bulunamayan veri türlerinin kullanılmasından kaynaklanabilir. Geçici çözüm, IList gibi JSON tarafından bulunabilen bir veri türü kullanmaktır. Daha fazla bilgi için bkz . .NET İstemcisi dizi parametreleriyle hub yöntemlerini çağıramıyor.

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 hub örneği oluşturamazsınız. Hub'da yöntemleri hub'ın dışından çağırmak için bkz. Hub bağlamına başvuru elde etmek için bkz. hub sınıfının dışından istemci yöntemlerini çağırma ve grupları yönetme .

HTTPContext.Current.Session null

Bu davranış tasarım gereğidir. Oturum durumunun etkinleştirilmesi çift yönlü mesajlaşmayı bozabileceğinden SignalR 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ışı bırakılmış yöntemlerin adlarına başvurmadığınızdan emin olun (örneğin OnConnectedAsync).

HostContextExtensions.WebSocketServerUrl null

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

"'signalr.hubs' adlı bir yol zaten yol koleksiyonunda" hatası

Uygulamanız tarafından iki kez çağrılırsa MapSignalR bu hata görüntülenir. Bazı örnek uygulamalar doğrudan Başlangıç sınıfında çağrı MapSignalR yapar; diğerleri çağrıyı sarmalayıcı sınıfında yapar. Uygulamanızın ikisini birden yapmadığından emin olun.

WebSocket kullanılmıyor

Sunucunuzun ve istemcilerinizin WebSocket gereksinimlerini ( Desteklenen Platformlar belgesinde listelenmiştir) karşıladığını doğruladıysanız, sunucunuzda WebSocket'i etkinleştirmeniz gerekir. Bunu yapma yönergelerini burada bulabilirsiniz.

$.connection tanımsız

Bu hata, sayfadaki betiklerin düzgün yüklenmediğini veya hub proxy'sine ulaşılamadığını veya yanlış erişildiğini gösterir. Sayfanızdaki betik başvurularının projenizde yüklenen betiklere karşılık geldiğini ve sunucu çalışırken tarayıcıda /signalr/hubs'a erişilebildiğini doğrulayın.

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

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

Çağıran durumuna Visual Basic'te veya kesin tür belirtilmiş bir hub'da Clients.Caller'dan erişilemez; "'Task(Of Object)' türünden 'String' türüne dönüştürme geçerli değil" hatası

Visual Basic'te veya kesin olarak belirlenmiş bir hub'da arayan durumuna erişmek için yerine özelliğini (SignalR 2.1'de kullanıma sunulmuştur) Clients.CallerkullanınClients.CallerState.

Visual Studio sorunları

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

Betik Belgeleri düğümü Çözüm Gezgini

Bazı öğreticilerimiz, hata ayıklama sırasında sizi Çözüm Gezgini'daki "Betik Belgeleri" düğümüne yönlendirir. Bu düğüm JavaScript hata ayıklayıcısı tarafından oluşturulur ve yalnızca Internet Explorer'da tarayıcı istemcilerinde hata ayıklanırken görünür; Chrome veya Firefox kullanılırsa düğüm görünmez. Silverlight hata ayıklayıcısı gibi başka bir istemci hata ayıklayıcısı çalışıyorsa JavaScript hata ayıklayıcısı da ç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ştirilmesini gerektirir. SignalR'nin sunucu bileşeni .NET Framework 4.5 gerektirir.

IIS sorunları

Bu bölüm, Internet Information Services ile ilgili sorunlar içerir.

SignalR Visual Studio geliştirme sunucusunda çalışır ancak IIS'de çalışmaz

SignalR, IIS 7.0 ve 7.5'te 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, sunucuda ASP.NET yüklenmesini gerektirir (ASP.NET varsayılan olarak IIS'de yüklü değildir). ASP.NET yüklemek için bkz . ASP.NET İndirmeler.

Microsoft Azure sorunları

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

SignalR'yi azure çalışan rolünde barındırırken FileLoadException

SignalR'yi bir Azure Çalışan Rolünde barındırmak "'Microsoft.Owin, Sürüm=2.0.0.0' dosyası veya derlemesi yüklenemedi" özel durumuyla sonuçlanabilir. Bu NuGet ile ilgili bilinen bir sorundur; Bağlama yeniden yönlendirmeleri Azure Çalışan Rolü projelerine otomatik olarak eklenmez. Bunu düzeltmek için bağlama yeniden yönlendirmelerini el ile ekleyebilirsiniz. Çalışan Rolü projenizin dosyasına aşağıdaki satırları app.config 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 arka düzlemi üzerinden alınmaz

Azure arka düzlemi tarafından kullanılan konular dahili olarak tutulur; kullanıcı tarafından yapılandırılabilir olması amaçlanmamıştır.