小编Nic*_*ckG的帖子

ASP.NET Core 3.1 / Identity 会话永不过期。如何让它在滑动到期时到期?

我的网站的安全检查显示会话(即登录)永远不会过期。我已经测试了自己,发现了同样的情况 - 今天早上我在本地主机上打开了该网站,但我仍然从昨天开始登录。我一直认为它会在 20 分钟后过期,就像在 .NET Framework 应用程序中一样。

我使用 ASP.NET Core Identity 脚手架,除了实现两因素身份验证之外,只需进行很少的更改。

在此输入图像描述

在我的 Startup.cs 中,我有以下代码来添加会话支持:

services.AddSession(options =>
{
    options.Cookie.IsEssential = true;
    options.IdleTimeout = TimeSpan.FromSeconds(10);
    options.Cookie.Expiration = TimeSpan.FromSeconds(10);
});
Run Code Online (Sandbox Code Playgroud)

我在 IdentityOptions 下看不到任何与登录超时相关的代码。

在登录页面上,我专门将任何“记住我”类型的函数硬编码为 false:

await _signInManager.SignInWithClaimsAsync(user, isPersistent: false, claims);

如何让我的登录会话在大约 20 分钟后过期,就像在 .NET Framework 中自动过期一样?

我基本上遇到了与此问题中提到的问题完全相反的问题: asp.net-core2.0 user auto logoff after 20-30 min

这里的大多数问题似乎都在询问如何增加超时,但我需要将其从(看似)无限减少到 20 分钟左右:

asp.net session-state asp.net-identity asp.net-core

4
推荐指数
1
解决办法
3391
查看次数

正则表达式包含grep的排除(即"不包含")

我正在尝试使用grep过滤webserver日志文件.我需要输出包含65.55的所有行. 但排除那些包含msnbot的匹配行.

我的出发点是 - 但它不起作用:

grep "^.*65\.55\..*(!msnbot).*$" ex100101.log > results.txt
Run Code Online (Sandbox Code Playgroud)

我正在使用grep for Windows(因此是双引号),但我怀疑这很重要.

regex grep filtering

3
推荐指数
1
解决办法
1982
查看次数

如何解密或访问受保护的Access数据库?

我接管了一个旧的软件项目,该项目使用MS Access数据库来存储其数据.但是,数据库不会在Access中打开,因为它说:

"您没有必要的权限来使用'database.mdb'对象.让您的系统管理员或创建此对象的人为您建立适当的权限."

但我不知道如何做到这一点,谷歌搜索显示几乎没有(似乎限制访问Access数据库,这不是经常做的事情!).我得到的唯一其他线索是在同一个文件夹中有一个.MDW(工作组)文件,但我不知道这是否(或如何)与主数据库有关,因为它有不同的文件名,也没有打开.

如何访问此数据库?是否可能受密码保护或只是某种权限问题?

ms-access

3
推荐指数
1
解决办法
9954
查看次数

如何验证.NET中HTTPS/SSL证书的有效性?

如何验证.NET中HTTPS/SSL证书的有效性?

理想情况下,我想建立一个到网站的HTTPS连接,然后找出是否以有效的方式完成(证书未过期,主机名匹配,证书链信任等),但内置HTTP客户端似乎忽略证书错误(而且我不确定是否需要物理下载网页来验证证书?).

我试过使用下面的代码(改编自评论中的答案),但ValidationCallback永远不会被调用:

    static void Main(string[] args)
    {
        String url = "https://www.example.com";
        HttpWebRequest request = WebRequest.CreateHttp(url);
        request.GetResponse();
        request.ServerCertificateValidationCallback += ServerCertificateValidationCallback;
        Console.WriteLine("End");
        Console.ReadKey();
    }

    private static bool ServerCertificateValidationCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
    {
        if (sslPolicyErrors == SslPolicyErrors.None)
        {
            Console.WriteLine("Certificate OK");
            return true;
        }
        else
        {
            Console.WriteLine("Certificate ERROR");
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

.net c# ssl https

3
推荐指数
1
解决办法
9435
查看次数

如何使用 PowerShell 获取域的最新 SSL 证书?

我正在尝试在给定域(例如 www.example.com)的虚拟主机证书存储中查找最新证书

找到任意数量的匹配证书很容易,但是我如何才能找到按到期日期(最远的未来)排序的最新证书?

我现有的代码是:

(Get-ChildItem -Path cert:\LocalMachine\WebHosting 
   | Where-Object {$_.Subject -match "example.com"}).Thumbprint;
Run Code Online (Sandbox Code Playgroud)

然而,这有时会返回两个证书,因为通常之前的证书(在续订之前)必须在证书存储中保留一小段时间。

powershell ssl-certificate powershell-3.0 octopus-deploy

3
推荐指数
1
解决办法
1712
查看次数

如何在 .NET Core 3 中的 Controller 构造函数中访问 HttpContext?

如何在 .NET Core 3.1 中的 Controller 构造函数中访问 HttpContext?

它在构造函数中似乎总是为 null,但在实际方法中可用。这在 MVC 4 中是可能的,并且在尝试将项目移植到 .NET Core 时出现了。

如果我尝试通过 DI 使用 HttpContextAccessor,则会失败并出现异常:

InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.Http.HttpContextAccessor' while attempting to activate 'MyProject.Controllers.UsersController'

c# .net-core asp.net-core asp.net-core-3.1

3
推荐指数
1
解决办法
3943
查看次数

如何在 .NET Core 5 MVC 中使用 RouteOptions?(强制使用小写 URL 等)

我想在我的应用程序中使用小写 URL,并且我可以看到此处记录了一个 RouteOptions 对象:

https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.routing.routeoptions?view=aspnetcore-5.0

但实际如何使用RouteOptions 呢?

我认为它会类似于下面的内容,但它只是生成一个编译器警告,指出 app.UseRouting() 不带任何参数:

app.UseRouting(options => {
    options.<no intellisense>
});
Run Code Online (Sandbox Code Playgroud)

那么有人可以告诉我在哪里可以指定 RouteOptions 吗?

asp.net-core-mvc asp.net-core-5.0

3
推荐指数
1
解决办法
1430
查看次数

为什么 SQL Server 会误解这个 ISO 8601 格式的日期?

为什么 SQL Server (2005) 会误解这个 ISO 8601 格式的日期?(YYYY-MM-DD)

DECLARE @FromDate DATETIME
SET @FromDate = '2013-01-05'
PRINT @FromDate
-- Prints: May  1 2013 12:00AM
Run Code Online (Sandbox Code Playgroud)

文本格式的日期显然是 1 月 5 日,但出于某种原因,SQL Server 将其解释为 5 月 1 日。世界上没有 YYYY-DD-MM 的日期格式,为什么会发生这种情况?我多年来一直使用这种格式,以前从未遇到过问题,所以我不确定在这种情况下有什么不同。

即使我使用 CONVERT 将其强制转换为 ISO8601,它仍然会出错:

DECLARE @FromDate DATETIME
SET @FromDate = CONVERT(VARCHAR, '2013-01-05', 126) 
PRINT @FromDate
-- Still prints: May  1 2013 12:00AM
Run Code Online (Sandbox Code Playgroud)

编辑:哎呀 - 我正在使用 'CONVERT(VARCHAR 以上我真正的意思是 CONVERT(DATETIME),所以这就是为什么没有任何效果。谢谢@RBarryYoung

但是,如果我在不同的服务器(SQL 2012)上运行上述两个示例中的任何一个,它们都会正确打印“Jan 5 2013 12:00AM”

这里发生了什么事?我认为在 SQL Server 中使用 ISO 格式的主要原因之一是它使月份和日期明确无误?

sql t-sql sql-server datetime

2
推荐指数
1
解决办法
2575
查看次数

如何创建一个类似Session []集合的集合?C#

我迫切需要在ASP.NET中镜像Session集合的行为(就检索项目时的行为而言).我已经花了很长时间在这上面,但迄今为止无处可去.

会话就像一个字典,但是如果你访问一个Session并且该值不存在,那么你得到的null不是抛出异常.这就是我需要复制的全部内容.

我尝试重写索引器以添加空检查,但它会引发堆栈溢出异常:

public class CriteriaCollection : Dictionary<string, object>
{
    private object GetData(string key)
    {
        object value = null;
        if (this.ContainsKey(key))
        {
            value = this[key];
        }
        return value;
    }

    private void SetData(string key, object value)
    {
        this[key] = value;
    }

    public new object this[string key]
    {
        get { return GetData(key); }
        set { SetData(key, value); }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net generics

2
推荐指数
1
解决办法
54
查看次数

为什么 Fiddler 返回“Fiddler] ReadResponse() failed:服务器没有返回此请求的完整响应。” 对于有效的请求?

我有一个工作控制台应用程序,它将数据发送到 API。然而,一旦我启动 fiddler,我就会收到消息:

[Fiddler] ReadResponse() 失败:服务器未返回此请求的完整响应。服务器返回 257 字节。

Fiddler 中显示的第一个标头是:HTTP/1.1 504 Fiddler - Receive Failure 它似乎是由 fiddler 直接生成的,而不是来自我的 API 服务器(.NET)。

鉴于 fiddler 不会向我显示服务器的原始结果,我如何调试为什么会发生这种情况?我认为存在某种 HTTP 标头错误,该错误与我的控制台应用程序兼容,但与 Fiddler 不兼容。

我一直在处理 gzip 压缩请求,因此也许其中一个标头不正确(内容长度),但由于无法查看原始响应,因此很难调试此问题。

http fiddler

2
推荐指数
1
解决办法
9782
查看次数