问题:有人可以告诉我如何在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中找不到任何方法。
我在Google上搜索了#2的说明,但它只是让我回到了我发布的同一篇文章。
为了进一步说明,在服务器上打开IIS并按照说明操作时,我没有看到“URL Rewrite section”作为图标。我在上面引用的文章中无法应用第2步的原因是因为我没有在IIS中看到必要的链接或图标。
这是我在IIS版本8中看到的截图。
答案 0 :(得分:1)
如果服务器上未安装url rewrite选项,download and install the extension。
仔细阅读引用的帖子以执行第2步:
正如其他人所说,有更多高级解决方案来调试您的应用程序。想到的是:
要轻松管理开发和生产配置文件之间的差异,请使用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。