Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/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# web部署发布到远程IIS后,ASP.NET Core 3.1身份持久cookie身份验证仍然失败_C#_Asp.net_Iis_Cookies_Asp.net Identity - Fatal编程技术网

C# web部署发布到远程IIS后,ASP.NET Core 3.1身份持久cookie身份验证仍然失败

C# web部署发布到远程IIS后,ASP.NET Core 3.1身份持久cookie身份验证仍然失败,c#,asp.net,iis,cookies,asp.net-identity,C#,Asp.net,Iis,Cookies,Asp.net Identity,web部署发布到远程IIS后,ASP.NET Core 3.1身份持久cookie身份验证仍然失败 我正在使用这个答案的解决方案 公共启动(IConfiguration配置,IHostingEnvironment环境){ 配置=配置; 主机环境=环境; } 私人IHostingEnvironment主机环境; 公共IConfiguration配置{get;} //此方法由运行时调用。使用此方法向容器中添加服务。 public void配置服务(IServiceCollection服务){ //

web部署发布到远程IIS后,ASP.NET Core 3.1身份持久cookie身份验证仍然失败

我正在使用这个答案的解决方案

公共启动(IConfiguration配置,IHostingEnvironment环境){
配置=配置;
主机环境=环境;
}
私人IHostingEnvironment主机环境;
公共IConfiguration配置{get;}
//此方法由运行时调用。使用此方法向容器中添加服务。
public void配置服务(IServiceCollection服务){
//如果密钥不存在,请为其创建一个目录
//它将在根目录中,wwwroot目录旁边创建
var keysDirectoryName=“Keys”;
var keysDirectoryPath=Path.Combine(hostingEnvironment.ContentRootPath,keysDirectoryName);
如果(!Directory.Exists(KeyDirectoryPath)){
CreateDirectory(KeyDirectoryPath);
}
services.AddDataProtection()
.PersistKeyStoreFileSystem(新目录信息(KeyDirectoryPath))
.SetApplicationName(“CustomCookieAuthentication”);
配置(选项=>
{
...
我做了很多谷歌搜索和研究(如果这一个也与asp.net core 3.1相关)

我正在部署到基于俄罗斯的web hosting REG.RU,在IIS web Deploy发布后,我的cookie仍然无法持久,每次重新部署后,我都必须再次登录

我相信社区会建议我广泛检查远程服务器托管日志,但至少可以帮助我查找什么以及如何在远程windows web asp.net应用程序托管提供商上启用和查看日志(一般来说,REG.ru主机使用Plesk管理面板,但据我所知,可能在web.config或其他ASP.NET应用程序文件夹文件服务器中启用了日志记录功能)

最近是否有其他人在将IIS web deploy发布到asp.net windows主机时遇到持久cookie登录asp.net core 3.1标识问题

发布期间重写web.config文件是否会影响应用程序的重新启动,因此即使考虑密钥存储,cookie也不再工作?如果是,是否有方法防止重写web.config


是的,当我检查xml密钥文件时,密钥文件夹会出现在FTP上。IsPersistent授予的持久性仅意味着身份验证将在浏览会话中持久化(也就是说,即使在浏览器关闭时也会保持)。您需要将持久性和设置cookie的过期时间相结合。可以使用ExpireTimeSpan选项通过设置cookie的过期时间。

一位开发人员向我暗示,我想取消选中“在目标位置删除其他文件”在发布配置文件选项中。这是一个天才,简单而明显。但是现在我试图理解如何取消勾选“在目标位置删除其他文件”可能会影响我的pulish生命周期,因为当我使用never builds更新应用程序时,例如我希望删除一些文件,例如静态img和js内容,我可能必须在发布更新生命周期期间通过ftp手动删除它们,并且取消选中“删除其他文件”选项。请回答。我已经实现了isPer除了通过dataprotection保存密钥和删除发布配置文件中的“在目标位置删除其他文件”选项之外,默认情况下,sisent为true。所有这三个步骤都解决了我的问题,并成功授予使用持久cookie登录的权限
public Startup(IConfiguration configuration, IHostingEnvironment environment) {
  Configuration = configuration;
  hostingEnvironment = environment;
}

private IHostingEnvironment hostingEnvironment;

public IConfiguration Configuration { get; }

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services) {
  // create a directory for keys if it doesn't exist
  // it'll be created in the root, beside the wwwroot directory
  var keysDirectoryName = "Keys";
  var keysDirectoryPath = Path.Combine(hostingEnvironment.ContentRootPath, keysDirectoryName);
  if (!Directory.Exists(keysDirectoryPath)) {
    Directory.CreateDirectory(keysDirectoryPath);
  }
  services.AddDataProtection()
    .PersistKeysToFileSystem(new DirectoryInfo(keysDirectoryPath))
    .SetApplicationName("CustomCookieAuthentication");

  services.Configure<CookiePolicyOptions>(options =>
  {
  ...