如何关闭不在服务器上的localhost的自定义错误?

时间:2015-05-08 21:13:12

标签: asp.net visual-studio-2012 iis

问题:有人可以告诉我如何在IIS 8中“批准服务器变量REMOTE_ADDR”吗?

背景:

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

要处理自定义错误,我在Web.config文件中有这个块。问题是当我在Visual Studio中的页面上工作时,我得到了与其他人一样的错误页面。当我这样做时,我手动注释掉这个块并启用自定义错误模式关闭的另一个块,然后当我再次向服务器刷新网站时将其切换回来。 (当网站仍处于开发阶段时,这种情况会发生很多。)

我将模式更改为“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我需要自动关闭自定义错误的方法。我通过另一个Stackoverflow post遇到了此页面,但该文章似乎是为早期版本的Windows Server和/或IIS编写的。

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

  1. 为customErrors设置RemoteOnly
  2. 让服务器管理员批准服务器变量REMOTE_ADDR
  3. 创建网址重写规则
  4. 我在Google上搜索了#2的说明,但它只是让我回到了我发布的同一篇文章。

    为了进一步说明,在服务器上打开IIS并按照说明操作时,我没有看到“URL Rewrite section”作为图标。我在上面引用的文章中无法应用第2步的原因是因为我没有在IIS中看到必要的链接或图标。

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

    IIS Screenshot

2 个答案:

答案 0 :(得分:1)

如果服务器上未安装url rewrite选项,download and install the extension

仔细阅读引用的帖子以执行第2步:

  • 在IIS管理器中打开网站
  • 双击/打开“URL Rewrite”部分: enter image description here
  • 点击“查看服务器变量”: enter image description here
  • 右键单击面板以打开上下文菜单,或使用右侧的操作菜单添加变量: enter image description here

注意:

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

要轻松管理开发和生产配置文件之间的差异,请使用Configuration Transformation。有几种工具可以使SlowCheetah更容易。

答案 1 :(得分:0)

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

您还可以使用web.config转换来自动执行发布过程。在发布应用程序时(或在发布模式下),IIS会使用“web.Release.config”文件。这是来自asp.net官方网站的good article