web-dev-qa-db-ja.com

SignalR / signalr / hubs 404が見つかりません

IISにSignalRサイトを展開しようとしています。コードはすべてVSで正常に動作します。しかし、404 not foundを取得すると、これまでに試したシグナル/ハブを解決しようとしてエラーが発生しました。

1)スクリプト参照を次のように変更します。

script src="<%= ResolveUrl("~/signalr/hubs") %>" type="text/javascript"></script>

2)Web.Configを変更して、以下を含めます。

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
    </modules>
</system.webServer>

3)IIS for UrlMappingsModuleの呼び出し要求を変更します。

4)SignalR.Hosting.AspNet.dllを追加して、それが何かに役立つかどうかを確認します。

他に何を試して、確認するのか、助けが必要なのか、正しい方向を指しているのかわからない?

34
user685590

ワイルドカードアプリケーションマップをサーバーに追加して、スクリプトURL "〜/ signalr/hubs"の不明な拡張子をマップしてください

13
chridam

ルート登録の順序は重要です。私はこの正確な問題を抱えていて、global.asax.csが次のようになっていることを確認することで修正しました。

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        RouteTable.Routes.MapHubs();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
}

これは、SignalR、MVC、およびWebApiを一緒に使用するWebサイトにありました。

30
SimonF

この404エラーの理由は、ハブがマップされていないためです。以前は、SimonFの回答に従って行う必要がありました。 SignalRバージョン2を使用している場合、RouteTable.Routes.MapHubs();は廃止されました。ハブをマッピングするには、次のようにスタートアップクラスを作成できます。

[Assembly: OwinStartup(typeof(WebApplication1.Startup))]
namespace WebApplication1
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Any connection or hub wire up and configuration should go here
            app.MapSignalR();
        }
    }
}

参照: http://www.asp.net/signalr/overview/releases/upgrading-signalr-1x-projects-to-2

17

Webフォームで作業している場合は、次の手順を実行してください

  1. Webconfigで:

    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true"/>
    
  2. ページにハブへの参照を追加します

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

    の代わりに

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

Web.configの次のappSettingを「true」に変更することで、〜/ signalr/hubsの404を修正できました。

<add key="owin:AutomaticAppStartup" value="false" />
3
Randy H.

私は少し遅れているかもしれませんが、それが誰かを助けることを願っています。このコードが起動時に実行されることを確認してください。

 Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    RouteTable.Routes.MapHubs()
 End Sub

Global.asaxをアプリケーションに追加してからコードビハインドを追加したが、これをGlobal.asaxファイルに追加したため

 <%@ Application Language="VB" CodeBehind = "Global.asax.vb" %> /*This was wrong*/

そのため、アプリケーションを実行しようとしたときに、global.asaxのApplication_Startがハブを初期化しませんでした。それが信号機/ハブを解決できなかった理由です

global.asaxでこれを修正

 <%@ Application Inherits="_Global" Language="VB" %>

これは私のGlobal.asax.vbで:

 Public Class _Global
     Inherits System.Web.HttpApplication
1
Seichi

サイトのAppPoolが.NET Frameworkの正しいバージョンをターゲットにしていることを確認してください。

1
Sasha

この404には多くの原因がある可能性があります-いくつかの一般的な原因は

  • ブラウザの/ signalr/hubsでURLにアクセスします-エラーがある場合、完全なエラーが表示されます。
  • 基本クラスがある場合は、HubName属性の重複を確認します
  • すべてのプロジェクトで参照されている正しいバージョンを使用していることを確認してください(バインディングエラーを回避するため)
0
JonathanC

私の場合、いくつかのowin依存関係を失い、404NotFoundエラーを受け取りました。

次の依存関係を追加すると、予期したURLからプロキシjavascriptファイルを明確に取得します。いいねURL:1111/singlar/hubs

  • Microsoft.Owin
  • Microsoft.Owin.Core
  • Microsoft.Owin.Host.SystemWeb
  • Microsoft.Owin.Security
  • オーウィン

答えが誰かを助けることを願っています。

0
arslanaybars

私にとっての解決策は、すべてのパッケージをreinstallして、すべての依存関係を復元することでした。

Nuget powershellを開き、このコマンドを使用します。

Update-Package -Reinstall

IISバージョンでは、AppPoolを再起動し、Webを再起動して動作するように修正しました。

0
Usman