2016-04-30 4 views
0

個別のユーザー認証に基づいてMVC 5 Webアプリケーションを作成しました。SignalR/signalr/hubs 403 MVC 5アプリケーションで見つからない(個々のユーザーアカウント認証)

私はasp.netの記事 http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr-and-mvcで個別のユーザー認証タイプのアプリケーションのためにstartup.csを別途作成する必要はありません。 app.MapSignalR()を追加しました。 ConfigureAuthメソッド内のは、App_Start> Startup.Auth.csファイルにあります。ビューページで

public void ConfigureAuth(IAppBuilder app) 
    {   
     app.UseCookieAuthentication(new CookieAuthenticationOptions 
     { 
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
      LoginPath = new PathString("/Account/Login") 
     });   app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 
     app.MapSignalR();} 

私は、次の参照

<script src="~/Scripts/jquery.signalR-2.2.0.min.js"></script> 
<script src="~/signalr/hubs"></script> 

を追加しました。しかし、実行時に私は/ Signalr /ハブのjsファイルの403 Not Foundエラーを取得します。 解決方法

+0

OWIN認証を使用する場合、フォーム認証をオフにしましたか?フォーム認証モジュールがOWINの前にリクエストをインターセプトし、403 –

+0

が 'signalr'という名前のPHYSICALフォルダを持っているかどうかを確認することもできます。その場合は、それを削除するか別の場所に移動してください –

答えて

0

あなたのapp.MapSignalR()が呼ばれていますか?

私はそれがConfigureAuthの内部に配置され、このコマンドで動作するかどうかわからないんだけど、私は記事で述べたように、別のスタートアップファイルを作成しようとする:

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

が別々に配置してくださいファイルとあなたのために動作するかどうかを参照してください。

また、Application_Startメソッドは次のようになりますか?

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); 
    } 
} 

私はあなたが登録メソッドを呼び出すされる順序は、あなたがそれらを正しく配置していることを確認してください、あなたはRouteTable.Routes.MapHubs()メソッドが呼び出されることを持っていることが重要であることを発見しました。

+0

RouteTable.Routes.MapHubs()はMVC 5.itでは廃止されました。これは、application_start()メソッド内に置くとコンパイルエラーをスローします。 –

+0

このチュートリアルでは、個別のstartup.csファイルを作成する必要がないことを示しています。 –

0

私はこれを試して、それが動作します。ここで

CSHTMLファイル

<script type="text/javascript" src="~/scripts/jquery.signalR-2.2.0.js"></script> 
<script type="text/javascript" src="~/signalr/hubs"></script> 
<script> 
    $(function() { 
     debugger; 
     var chat = $.connection.signalhub; 
     chat.client.Send = function (msg) { 
      debugger; 
      $("#message").append(msg); 
     } 

     $("#btnSend").click(function() { 
      debugger; 
      chat.server.broadcastMessage($("#txtmessage").val()); 
      $('#txtmessage').val('').focus(); 
     }); 

     $.connection.hub.start(); 
    }); 
</script> 
<div class="row" id="message"> 

</div> 
<input type="text" name="txtmessage" id="txtmessage" /> 
<button name="btnSend" id="btnSend">Send</button> 

はここに私のSignalRHub

using Microsoft.AspNet.SignalR; 
using Microsoft.AspNet.SignalR.Hubs; 

namespace SignalR.Code 
{ 
    [HubName("signalhub")] 
    public class SignalRHub : Hub 
    { 
     public void BroadcastMessage(string message) 
     {    
      Clients.Client(Context.ConnectionId).Send(message); 
     } 
    } 
} 

そして、ここでは私のStartup.Auth.csが

using Microsoft.AspNet.Identity; 
using Microsoft.Owin; 
using Microsoft.Owin.Security.Cookies; 
using Owin; 

namespace SignalR 
{ 
    public partial class Startup 
    { 
     public void ConfigureAuth(IAppBuilder app) 
     { 
      app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
       LoginPath = new PathString("/Account/Login") 
      }); 

      app.MapSignalR(); 

      app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 
     } 
    } 
} 

ファイルです私のサンプルアプリケーションです私も あなたが使ったJQueryのバージョンを確認し、あなたのプロジェクトがどこにあるのかを定義することをお勧めしますか?

関連する問題