39

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

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の呼び出し要求を変更しますUrlMappingsModule

4)SignalR.Hosting.AspNet.dllそれが何かを助けるかどうかを確認するために追加されました。

他に何を試したり確認したりするのかわからない、助けや正しい方向への指示はありますか?

4

14 に答える 14

30

ルート登録の順序が重要です。この正確な問題があり、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 サイトにありました。

于 2013-01-28T14:57:26.730 に答える
19

この 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-20

于 2015-02-16T09:32:49.377 に答える
13

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

于 2012-06-25T10:20:30.923 に答える
1

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

于 2013-03-10T20:59:41.483 に答える
1

少し遅れるかもしれませんが、誰かの役に立てば幸いです。このコードが開始時に実行されることを確認してください。

 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
于 2014-02-17T21:13:38.297 に答える
0

MVC3でのルーティングに問題はありませんでしたが、パスが間違っていました。ソースを見て、スクリプトが実際にどこを指しているかを確認し、アプリケーションディレクトリが正常に解決されていることを確認することをお勧めします。また、ブラウザで正しいパスを使用してファイルを物理的に開くことができることを確認してください。例えば

<script src="/MyWebApp/signalr/hubs" type="text/javascript"></script>  

ブラウザからファイルを開くことができますか(正しいサブディレクトリに置き換えます)?

そうでない場合、ハブが正しく設定されておらず、正しい方向を向いている可能性があります。それをいじくりまわす。

私が使用した構文は次のとおりです。

<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>  

Url.ContentとResolveUrlの違いかもしれません

于 2012-07-03T13:56:05.093 に答える
0

この 404 には潜在的に多くの原因があります - いくつかの一般的な原因は

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