IIS 7 - 虚拟目录重定向路径?

Dyn*_*nde 8 iis redirect iis-7 virtual-directory

我写了这个小小的网络应用程序,列出了在网站上附加的本地IIS +虚拟目录上运行的网站.

使用以下行我可以获取虚拟目录的HTTP重定向URL,如果它被设置为重定向:

_directoryEntry.Properties["HttpRedirect"].Value.toString()
Run Code Online (Sandbox Code Playgroud)

这在IIS 6中运行得非常好 - 但是当我在IIS 7中尝试我的应用程序时,该值为空 - 我尝试将应用程序池切换到Classic管道 - 这里的IIS 7有什么变化?为什么?

Mrc*_*ief 6

在IIS7 <httpRedirect>元素中替换IIS 6.0 HttpRedirect元数据库属性.

您需要在web.config文件中将其设置为:

  <system.webServer> 
    <httpRedirect enabled="true" destination="WebSite/myDir/default.aspx" />" 
  </system.webServer> 
Run Code Online (Sandbox Code Playgroud)

如果您不想调整web.config,本文将讨论以IIS 6的方式执行它们的方法:在IIS6等虚拟目录上的IIS7中创建Http重定向

希望这可以帮助.


mrd*_*rdc 1

发生了什么变化?:IIS7有一个全新的配置系统,类似于.NET的分层配置系统。查看此链接以了解有关更改内容的更多详细信息。

如何获取 HttpRedirect 值:在 C# 中,不使用 System.DirectoryServices 命名空间来访问 IIS 配置设置,而是使用新的 Microsoft.Web.Administration.dll。

您的代码应该类似于IIS.net中的示例:

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetWebConfiguration("Default Web Site");
         ConfigurationSection httpRedirectSection =                                  config.GetSection("system.webServer/httpRedirect");
         Console.WriteLine("Redirect is {0}.", httpRedirectSection["enabled"].Equals("true") ? "enabled" : "disabled");

      }
  }
}
Run Code Online (Sandbox Code Playgroud)

实际上,您可以使用新的 Microsoft.Web.Administration.dll 做很多事情。请在此处查看 Carlos Ag 的博客以获取一些想法。

两个快速注释:

  • 如果安装了“IIS 管理脚本和工具”角色服务,则 Microsoft.Web.Administration.dll 可用。它应该位于 systemroot 中的 inetsrv 目录下。
  • 使用 MWA dll 运行的任何代码都需要以管理员身份运行才能访问 IIS 配置,因此只需确保运行脚本的帐户具有管理员权限即可。

希望这可以帮助!