沒錯,所以我已經看到很多關於這個問題的問題,但是沒有一個建議的修復程序適用於我。信號集線器沒有找到(403)
我有一個運行在Visual Studio 2012/IIS Express中的MVC4項目,使用SignalR爲用戶做一些反饋。當我運行的項目,我在Chrome中得到一個403錯誤,如例如:
Failed to load resource: the server responded with a status of 403 (Forbidden) http://{website}/Hubs/
Uncaught Error: SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. <script src='/signalr/hubs'></script>.
很顯然,我已經改變了實際的域在我的機器上{}網站
現在,我原本是一個文件夾中在我的Web項目的根目錄中有一個名爲signalr的集線器子文件夾,但後來我在SignalR GitHub上讀到了你不應該這樣做,所以我將它改爲「集線器」。仍然沒有修復它。我也看到了關於把你的RouteTable.Routes.MapHubs()的修復;按照正確的順序。我的是這樣:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteTable.Routes.MapHubs();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
我也看到有些人建議在您的路線作爲參數傳遞到MapHubs()方法,但這需要一個字符串和HubConfiguration對象作爲參數,這樣不工作無論是。
我的看法代碼如下所示:
@using(Html.BeginForm("Report", "Home", FormMethod.Post, new { enctype="multipart/form-data" }))
{
@Html.ValidationSummary(true);
<div>
@(InputExtensions.Hidden(Html, "submittingUserId", ViewBag.CurrentUser))
@(InputExtensions.Hidden(Html, "signalConnectionId"))
<br />
@Html.EditorFor(model => model.UploadedFile)
@Html.ValidationMessageFor(model => model.UploadedFile)
</div>
<div>
<input id="subButton" type="submit" value="UploadFile" title="Upload File" />
</div>
}
@section Scripts {
@Scripts.Render("~/Scripts/jquery.signalR-1.1.1.min.js")
@Scripts.Render("~/Hubs")
<script type="text/javascript">
$(document).ready(function() {
var accountMovementMoveHub = $.connection.accountMovementHub;
$("#signalConnectionId").val($.connection.connectionId);
$.connection.hub.updateProgress = function (message) {
$("#progress-list").append('<li>' + message + '</li>');
};
$.connection.hub.start();
});
</script>
}
我還添加這些元素到Web.config:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
</modules>
</system.webServer>
它是推動我絕對瘋了,我已經試過絕對每一個建議,我可以找到在這裏,github,以及其他任何事情:(
任何幫助將不勝感激!
感謝
ANSWER
因此,原來,我以爲腳本參考/ signalr /集線器是包含集線器的物理文件夾。它不是;它是對虛擬目錄的引用,這就是爲什麼如果你還有一個名爲SignalR的物理文件夾,它會變得困惑。我將我的集線器文件夾移到了我的業務項目中,並將腳本參考設置回「/ signalr/hubs」,並開始工作。
對不起,這個愚蠢的問題,並感謝您的答案。
看起來像你有一個尾部斜槓? http:// {website}/Hubs/ – Steve
我認爲這只是Chrome的控制檯添加最後一個斜槓。錯誤來自視圖中的腳本引用,它引用了「〜/集線器」 – JustinMoser
您是否查看了源代碼並進行了確認?只是一個想法。 – Steve