如何关闭不在服务器上的本地主机的自定义错误?

How do you turn off custom errors for localhost not on server?

问题:谁能告诉我如何在 IIS 8 中"approve server variable REMOTE_ADDR"?

背景:

我在 Windows 2012 服务器上安装了 IIS 8,但我的所有网站开发都是从我的 PC 进行的,它不在该服务器上。我的 asp.net 是 4.5 版。在 Visual Studio 中,解决方案是 "website",我使用 "Build > Publish Website."

发布我的文件

为了处理自定义错误,我的 Web.config 文件中有这个块。问题是,当我在 Visual Studio 中的页面上工作时,从我的 PC 上的本地主机查看它们时,我得到了与其他人相同的错误页面。当我这样做时,我手动注释掉这个块并启用另一个关闭自定义错误模式的块,然后在我对服务器进行另一个网站刷新时将其切换回来。 (当网站仍处于开发阶段时,这种情况经常发生。)

我将模式更改为 "RemoteOnly." 这突出了必须来回更改模式的另一个问题:您有时会忘记将其切换回来。举个例子。

<customErrors mode="RemoteOnly" defaultRedirect="~/Error_Pages/Error.aspx">
  <error statusCode="400" redirect="~/Error_Pages/4xx.aspx" />
  <error statusCode="401" redirect="~/Error_Pages/Unauthorized.aspx" />
  <error statusCode="403" redirect="~/Error_Pages/4xx.aspx" />        
  <error statusCode="404" redirect="~/Error_Pages/4xx.aspx" />
  <error statusCode="410" redirect="~/Error_Pages/4xx.aspx" />        
</customErrors>

我希望可能有更好的解决方案,例如告诉 IIS 我需要自动关闭自定义错误的方法。我是通过另一个 Whosebug post 看到此页面的,但这篇文章似乎是为 Windows 服务器 and/or IIS 的早期版本编写的。

根据文章,解决我的问题只有三个简单的步骤。我已经完成了第 1 步。我无法完成第 2 步,因为我在 IIS 版本 8 中找不到任何方法。

  1. 为自定义错误设置 RemoteOnly
  2. 让服务器管理员批准服务器变量 REMOTE_ADDR
  3. 创建URL重写规则

我 Google 搜索了关于 #2 的说明,但它只让我回到了我发布的同一篇文章。

为了进一步说明,在服务器上打开 IIS 并按照说明进行操作时,我没有看到 "URL Rewrite section" 作为图标。我无法应用我引用的文章中的步骤 #2 的相同原因是因为我没有在 IIS 中看到必要的 link 或图标。

这是我在 IIS 版本 8 中看到的屏幕截图。

您应该在发布之前在本地测试和修复您的应用程序,或者在您的服务器中创建一个假的(安全的)网站并进行一些调试。但是,我建议您安装 ELMAH 来记录您的错误并在您网站的安全页面中很好地查看它们。您可以使用 Nuget,搜索 Elmah 或 Elmah.mvc 包(如果您使用 asp.net mvc ;)并安装它...您可以将它连接到您的 SQL 服务器数据库,保存日志在内存和其他格式中。我不会浪费时间配置 IIS 或向管理员请求许可。

您还可以使用 web.config 转换来自动化发布过程。当您发布应用程序(或处于发布模式)时,IIS 使用一个 "web.Release.config" 文件。这是来自 asp.net 官方网站的 good article

如果您的服务器上没有安装 url 重写选项,download and install the extension

仔细阅读引用的 post 以执行步骤 2:

  • 在 IIS 管理器中打开网站
  • 双击on/open "URL Rewrite section":
  • 点击"View Server Variables":
  • 右键单击面板打开上下文菜单或使用右侧的操作菜单添加变量:

注:

正如其他人所提到的,有更高级的解决方案来调试您的应用程序。想到的是:

  • Application Insights / New Relic
  • 更高级的代码日志记录,以便您可以监控 Windows 事件日志
  • Elmah
  • Intellitrace 将允许您收集服务器上的操作日志并在本地进行调试。

要轻松管理开发和生产配置文件之间的差异,请使用 Configuration Transformation. There are several tools that make that easier like SlowCheetah