Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Blazor服务器中的信号器Cookie身份验证不起作用_C#_Asp.net Core_Signalr_Blazor_Signalr Hub - Fatal编程技术网

C# Blazor服务器中的信号器Cookie身份验证不起作用

C# Blazor服务器中的信号器Cookie身份验证不起作用,c#,asp.net-core,signalr,blazor,signalr-hub,C#,Asp.net Core,Signalr,Blazor,Signalr Hub,在blazor server Signaler中,我有一个简单的私人聊天应用程序,用户可以登录、添加好友并与该好友聊天。 对于登录,我使用了AspNetCore.Identity 现在,问题是应用程序在本地机器上运行得非常好,但当我在ngrok()中运行应用程序时,出现了一个错误,错误是error:System.Net.Http.HttpRequestException:Response status code不表示成功:401(未经授权).ngrok是一种跨平台应用程序,它使开发人员能够将本地

在blazor server Signaler中,我有一个简单的私人聊天应用程序,用户可以登录、添加好友并与该好友聊天。
对于登录,我使用了
AspNetCore.Identity


现在,问题是应用程序在本地机器上运行得非常好,但当我在
ngrok()
中运行应用程序时,出现了一个错误,错误是
error:System.Net.Http.HttpRequestException:Response status code不表示成功:401(未经授权).


ngrok是一种跨平台应用程序,它使开发人员能够将本地开发服务器公开到Internet上。 该软件使本地托管的web服务器似乎托管在ngrok.com的子域上,这意味着本地计算机上不需要公共IP或域名

下面是我们为向signlar hub验证用户身份所做的工作

在Host.cshtml中

@{
 var cookie = HttpContext.Request.Cookies[".AspNetCore.Identity.Application"];    
}
<body>
 @* Pass the captured Cookie to the App component as a paramter*@

 <component type="typeof(App)" render-mode="Server" param-Cookie="cookie" />
</body>

CookiesProvider.cs
public class CookiesProvider
{
    public string Cookie { get; set; }
}

剃刀
@attribute [Authorize]

@* code omitted here... *@

@code{
       protected override async Task OnInitializedAsync()
       {
         var container = new CookieContainer();
         var cookie = new Cookie() 
         {
             Name = ".AspNetCore.Identity.Application", 
             Domain = "localhost",
             Value = CookiesProvider.Cookie
         };

         container.Add(cookie);

         hubConnection = new HubConnectionBuilder()
         .WithUrl(NavigationManager.ToAbsoluteUri("/chathub"), options => 
          {
              // Pass the security cookie to the Hub. 

                 options.Cookies = container; 
          }).Build();

          await hubConnection.StartAsync();
       }

  }

在枢纽
你在Github上发布了这个问题吗?我现在能给你的最好建议是删除域属性或提供不同的值,然后看看会发生什么。你看到了吗:@enet changing Domain property对我有用谢谢
@attribute [Authorize]

@* code omitted here... *@

@code{
       protected override async Task OnInitializedAsync()
       {
         var container = new CookieContainer();
         var cookie = new Cookie() 
         {
             Name = ".AspNetCore.Identity.Application", 
             Domain = "localhost",
             Value = CookiesProvider.Cookie
         };

         container.Add(cookie);

         hubConnection = new HubConnectionBuilder()
         .WithUrl(NavigationManager.ToAbsoluteUri("/chathub"), options => 
          {
              // Pass the security cookie to the Hub. 

                 options.Cookies = container; 
          }).Build();

          await hubConnection.StartAsync();
       }

  }
[Authorize()]
public class ChatHub : Hub
{

}