c# - 在 httplisteners authenticationselectordelegate 中提供身份验证被拒绝的消息

标签 c# httplistener system.net

我目前正在使用 httplistener authenticationselector delegate 进行 windows 身份验证和 ip 检查,它的工作非常出色,因为它拒绝并允许它应该是的客户端。

但是,问题是当有人被拒绝时,他们会收到 403 http 响应,这似乎被大多数浏览器解释为空白屏幕。我想做的是发回一条消息,说“访问被拒绝:您的 IP 已被列入白名单”。

这可能吗?

委托(delegate)的片段如下(目前完美运行)。

AuthenticationSchemeSelector pIPChecker = pRequest =>
{
    if (!pfunIPChecker(pRequest.RemoteEndPoint.Address))
    {
        LogHelper.writeToEventLog(
            "WARNING, BANNED IP: " + pRequest.RemoteEndPoint.Address.MapToIPv4().ToString() + "attempted to login", 
            EventLogEntryType.Warning,
            LogHelper.EventLogID.PermissionFailure);

        return AuthenticationSchemes.None;
    }

    return AuthenticationSchemes.Anonymous;
}

最佳答案

正如 X39 指出的那样,唯一的方法似乎是使用 Authenticator 委托(delegate),而是像往常一样实际读取请求,并发回一个包含您的内容的 403愿望。

关于c# - 在 httplisteners authenticationselectordelegate 中提供身份验证被拒绝的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56037162/

相关文章:

c# - 使用 AutoPoco 生成依赖于另一个值的值

c# - HttpContext.Response基础套接字意外关闭

c# - 如何在可移植框架中设置 ServicePointManager.DefaultConnectionLimit

c# - MvvmCross 可移植类库 - System.Net.ServicePointManager

c# - 使用 File.Create 和 Delete 进行单元测试,但出现 "file used by other process"异常

c# - Exchange Web 服务 (EWS) 调用在 ASP.NET 下失败,但在控制台应用程序下失败

c# - 有没有办法在使用 DateTime.ParseExact 时从日期字符串中排除字符?

web-services - 不使用 IIS(自定义 Web 服务器)的 asmx Web 服务的独立实现(服务器端!)

c# - .NET HttpListener 前缀问题与本地主机以外的任何东西

c# - 如何检查Web服务器是否启动? (C#)