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
- Visual Studio 2013
- .NET 4.5
- SignalR sürüm 2
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
- Iis web yuvalarını ping/pong olarak yapılandırarak ölü bir istemciyi algılama
- Diğer bağlantı sorunları
- Derleme ve sunucu tarafı hataları
- Visual Studio sorunları
- Internet Information Services sorunları
- Microsoft Azure sorunları
İ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ı sendMessage
bir 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 public
bildirilmesi 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ı
MapSignalR
olduğ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/hubs
hub 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/hubs
sunucuya 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.AddClientCertificate
sertifikayı 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 = false
yaparak 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.Caller
kullanı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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin