Правильно, поэтому я видел множество вопросов об этом, но ни одна из предлагаемых исправлений не работала для меня.Signalr Hubs Не найдено (403)
У меня есть проект MVC4, работающий в Visual Studio 2012/IIS Express, с помощью SignalR, чтобы сделать некоторые отзывы для пользователей. Когда я запускаю проект, я получаю ошибку 403 в Chrome, как, например:
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>.
Очевидно, я изменил фактический домен на моей машине {сайт}
Теперь, первоначально я был в папке называемый signalr в корне моего веб-проекта с подпапкой концентраторов, но затем я прочитал в SignalR GitHub, что вы не должны этого делать, поэтому я изменил его на «Hubs». Все еще не исправить.
Я также видел исправление относительно размещения вашего 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 и где-нибудь еще в этом отношении :(
Любая помощь была бы принята с благодарностью!
Благодаря
ОТВЕТ
Так что получается, я предположил, что ссылка на скрипт/signalr/концентраторы был ФИЗИЧЕСКОЙ папку, содержащую ступицу. Который это не так; это ссылка на виртуальный каталог, поэтому, если у вас ТАКЖЕ есть физическая папка SignalR, она запутывается. Я переместил папку хабов в свой бизнес-проект и вернул ссылку на сценарий «/ signalr/hubs», и все это начало работать.
Извините за глупый вопрос и спасибо за ответы.
Похоже, у вас есть косые черты ??? http: // {website}/Hubs/ – Steve
Я думаю, что это просто консоль Chrome, добавляющая эту последнюю косую черту. Ошибка возникает из ссылки на сценарий в представлении, который ссылается на «~/Hubs» – JustinMoser
Вы просмотрели источник и подтвердили это? Просто мысль. – Steve