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
を追加して、それが何かに役立つかどうかを確認します。
他に何を試して、確認するのか、助けが必要なのか、正しい方向を指しているのかわからない?
ワイルドカードアプリケーションマップをサーバーに追加して、スクリプトURL "〜/ signalr/hubs"の不明な拡張子をマップしてください
ルート登録の順序は重要です。私はこの正確な問題を抱えていて、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サイトにありました。
この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
Webフォームで作業している場合は、次の手順を実行してください
Webconfigで:
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true"/>
ページにハブへの参照を追加します
<script src="/signalr/signalr/hubs"></script>
の代わりに
<script src="/signalr/hubs"></script>
Web.configの次のappSettingを「true」に変更することで、〜/ signalr/hubsの404を修正できました。
<add key="owin:AutomaticAppStartup" value="false" />
私は少し遅れているかもしれませんが、それが誰かを助けることを願っています。このコードが起動時に実行されることを確認してください。
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
サイトのAppPoolが.NET Frameworkの正しいバージョンをターゲットにしていることを確認してください。
この404には多くの原因がある可能性があります-いくつかの一般的な原因は
私の場合、いくつかのowin依存関係を失い、404NotFoundエラーを受け取りました。
次の依存関係を追加すると、予期したURLからプロキシjavascriptファイルを明確に取得します。いいねURL:1111/singlar/hubs
- Microsoft.Owin
- Microsoft.Owin.Core
- Microsoft.Owin.Host.SystemWeb
- Microsoft.Owin.Security
- オーウィン
答えが誰かを助けることを願っています。
私にとっての解決策は、すべてのパッケージをreinstall
して、すべての依存関係を復元することでした。
Nuget powershell
を開き、このコマンドを使用します。
Update-Package -Reinstall
IISバージョンでは、AppPoolを再起動し、Webを再起動して動作するように修正しました。