2015-05-29 38 views
3

這是一個後續行動,我以前在這裏的問題..電話MapSignalR導致協議錯誤

MVC - trouble linking to another Controller/Action

,你可以看到,我最終也從另一個控制器得到我的觀點在新的顯示標籤,所以它工作。直到我安裝了SignalR。簡單的版本使用本教程爲指導..

http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr-and-mvc

教程以下步驟來創建一個項目後,工作得很好。我唯一需要做的就是將jquery signalr javascript文件的版本更改爲最新版本(這是我沒有的,因爲該教程是用VS 2012編寫的)。

在任何情況下

,以下爲我的網站相同的步驟後,我現在當我點擊鏈接/ SignalR/SRStart(新標籤)得到一個錯誤..

協議錯誤:未知運輸

玩弄我發現這隻發生在調用startup.cs文件中的app.MapSignalR()之後。無法理解,爲什麼自從我接下來的教程工作得很好,除非它與該鏈接上的另一個控制器交叉有關。它在SRStart視圖中放置了所有的信號連接代碼和回調函數,但我認爲它沒有達到,因爲頁面甚至沒有加載。

這是我的代碼..

startup.cs

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

樞紐

public class SRHub : Hub 
{ 
    public void Send(string message) 
    { 
     // Call the addNewMessageToPage method to update clients. 
     var conn = GlobalHost.ConnectionManager.GetHubContext<SRHub>(); 
     conn.Clients.All.addNewMessageToPage(message); 
     //Clients.All.addNewMessageToPage(message); 
    } 
} 

的JavaScript在SRStart.cshtml

$(function() { 
     // Reference the auto-generated proxy for the hub. 
     var conn = $.connection.sRHub; 
     // Create a function that the hub can call back to display messages. 
     conn.client.addNewMessageToPage = function (message) { 
      if (!message.contains('[EOF]')) { 
       populateStreamDialog(message); 
      } 
     }; 

     $.connection.hub.start() 
      .done(function() { 

      }); 
    }); 

任何幫助,將不勝感激。 。

+0

什麼是SRStart控制器\視圖的路由配置? –

+0

沒有一個可能是問題。對於MVC我仍然有點新,但我不知道要添加一個。你能給我一些關於這個PLZ的細節嗎? – gmes29

回答

1

我能夠複製錯誤。問題是/SignalR是SignalR本身使用的路由。 通過使用名爲SignalRController的MVC控制器,SignalR和MVC之間現在存在衝突,導致該錯誤。 只需將您的MVC控制器SignalRController(以及包含其視圖的文件夾)重命名爲其他內容...

+0

我的天哪,是嗎?嘖。我永遠不會想到這一點。很多。 – gmes29

+0

請確保接受答案(不僅僅是投票):_要將答案標記爲已接受答案,請點擊答案旁邊的複選標記以將其從空洞狀態切換到綠色_ –