【问题标题】:Error: your connection to this site is not private Asp.Net. MVC5错误:您与此站点的连接不是私有的 Asp.Net。 MVC5
【发布时间】:2019-01-25 09:53:30
【问题描述】:

我正在为 asp.net mvc 5 应用程序设置一个带有 windows Azure VM 的新服务器。除了一个控制器,我可以毫无问题地打开应用程序的每一页。即,每当我尝试打开属于特定控制器的页面时,它都会提示我输入用户名和密码,如下所示。

我在不同的 Windows Server 2016 VM 中使用相同的应用程序,没有任何问题。

我也没有看到应用程序/IIS 日志的任何错误。我在应用程序中没有任何 https 要求。

什么可能导致这种行为?

namespace App.Controllers
{
    public class ReportsController : BaseController
    {
        private readonly IReportRepository reportRepository;
        public ReportsController(): this(new ReportRepository()){
        }

        public ReportsController(IReportRepository reportRepository){
        this.reportRepository = reportRepository;
        }

        public ViewResult Action()
        {
           return View(reportRepository.All);
        }
    }
 }

namespace App.Controllers
{
    [Authorize]
    public class BaseController : Controller
    {
    }
 }

更新:我将 ReportsController 重命名为 AppReportsController,问题就消失了。 即当我尝试访问时收到上述提示

http://domain/Reports/Action

但不是为了

http://domain/AppReports/Action

请有人向我解释一下这里发生了什么?这是否意味着“报告”被框架保留了?

【问题讨论】:

  • 如果您不使用传输层安全性(即 HTTPS!),那么浏览器会告诉您这一点,因为您通过不安全的连接发送凭据,很容易被恶意人员嗅探。跨度>
  • 如果是这样,其他页面如何正常工作? BaseController 也继承了所有其他控制器。
  • 每当您看到密码弹出窗口并且您的连接不安全时,您都会看到该消息。
  • 从图片看你使用的是HTTP(不带S后缀)和登录时通常用于提交秘密凭据的密码输入,因此在使用不安全协议时会触发安全问题警告。
  • 用户在加载此特定页面之前已登录应用程序。我只收到属于 ReportsController 的任何操作的提示。对于来自不同控制器的任何其他页面,我没有看到此提示。

标签: c# asp.net-mvc windows-server-2016 iis-10


【解决方案1】:

这是一个身份验证问题。就我而言,它通过以下步骤解决: 1- 转到 IIS 管理器,在左侧窗格中,展开服务器根目录并从站点节点中选择您的 Web 应用程序。 2- 在主屏幕中,转到 IIS 部分并选择身份验证。 3-启用匿名身份验证。 4- 然后,选择 Edit 并将 Edit Anonymous Authentication Credentials 设置为 Application pool identity。

【讨论】:

  • 我一直想知道这是什么问题,我禁用了 Windows Authentication 以使其正常工作,非常感谢
  • 也解决了我的问题。谢谢
【解决方案2】:

我知道这是一篇旧帖子,但是我偶然发现了这个帖子,因为我遇到了与 OP 相同的错误。

我已经解决了这个问题,以防有人遇到同样的问题。 但是解决方案可能会有所不同,这取决于我们是否安装了相同的应用程序。

  1. 检查web服务器/服务器是否安装了sql server。
  2. 检查是否安装了报告服务。
  3. 从应用程序控制面板中删除/卸载报告服务 如果您不知道如何删除报告服务,请点击此链接How to remove Report Service

  4. 如果您仍然遇到相同的错误,请再次检查。干杯!

【讨论】:

    【解决方案3】:

    如果您在 Web 应用程序中不使用 transport layer security(即 HTTPS),浏览器会告诉您您与该站点的连接不是私密的,并且您被要求输入数据 - 在这种情况下是您的凭据。这样做很危险,因为这些数据很容易被恶意人员嗅探。

    当今世界没有理由不拥有安全网站,我强烈建议您获得证书(它们是free and super easy!)

    【讨论】:

    • 我了解通过 http 而不是 https 发送敏感信息时的安全问题。但这与我的问题无关。
    • 我向您保证,这并非无关紧要,否则您一开始就不会将该页面放在登录名后面。如果您愿意公开您的数据,请删除登录信息。
    • 感谢您的回答并在这里为我提供帮助。但是你认为如果我删除登录,它会解决我在这里面临的问题吗?
    • 如果您删除登录信息,则不会出现该消息,是的。但是,如果您有任何数据输入,您可能会收到其他警告。此外,Chrome(可能还有其他浏览器)会通过告诉用户该网站“不安全”来警告用户。
    • 但是这里的浏览器并没有抱怨网站不安全。它说网站不是私人的。我觉得我在服务器中缺少一些配置,因为相同的应用程序在不同的服务器上运行良好,没有任何提示。
    【解决方案4】:

    不要使用“报告”,而是使用“报告”。控制器名称 ReportController 不是 ReportsController。会好的。我遇到了这个问题,这就是我得到的解决方案。

    【讨论】:

      猜你喜欢
      • 2015-04-01
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 2020-07-21
      • 2016-09-02
      • 2022-06-10
      相关资源
      最近更新 更多