2011-06-02 82 views
2

我可以使用以下代码在IIS中创建http重定向。但是,它仅为主站点“MySite”本身创建重定向。如何以编程方式将重定向添加到虚拟目录?创建VD时是否需要设置一些设置?谢谢!如何使用C#从虚拟目录创建HTTP重定向

ServerManager iisManager = new ServerManager(); 
Configuration config = iisManager.GetWebConfiguration("MySite"); 
ConfigurationSection httpRedirectSection = config.GetSection("system.webServer/httpRedirect"); 
httpRedirectSection["enabled"] = true; 
httpRedirectSection["destination"] = @"http://www.google.com"; 
httpRedirectSection["exactDestination"] = false; 
httpRedirectSection["httpResponseStatus"] = @"Found"; 

iisManager.CommitChanges(); 
+0

我的意思是“从”虚拟目录中读取了。如果用户转到http://MySite/VD.aspx,它会将它们重定向到另一个页面。我需要能够通过C#添加这些。 – 2011-06-02 20:03:32

回答

0

肖恩,

你的代码做什么基本上修改为您的网站的web.config文件。虚拟目录很可能被配置为一个应用程序,因此它将拥有自己的web.config文件。你尝试做同样的事情,但简单地改变:

Configuration config = iisManager.GetWebConfiguration("MySite/VirtDirName"); 

此外,虚拟目录,因为它是一个子应用程序可能已经继承了父站点httpRedirect设置,我会首先检查,这是不是这样。

http://www.iis.net/ConfigReference/system.webServer/httpRedirect

http://msdn.microsoft.com/en-us/library/ms178685.aspx

+0

有没有一种方法可以在不修改网页配置的情况下完成此操作?谢谢! – 2011-06-02 21:56:54

+0

要清楚的是,你已经使用的代码修改了web.config。不要害怕修改它 - 这就是它的目的,为您提供配置已部署应用程序的方法。你可以按照你的想法做不同的事情,但是这也涉及编辑web.config,我已经做了类似于你正在做的事情的设置,将404错误的customErrors页面(在web.config中)设置为404。 aspx页面,然后在aspx页面中查看实际请求的页面并进行相应的重定向。不知道这是否更多。 – mikey 2011-06-02 22:14:30

+0

我希望能够避免修改它的原因是因为我希望能够创建一个VD并将其指向一个虚拟目录,该目录实际上不会被使用。在较旧版本的IIS中,您可以设置一个VD并选中一个表示其重定向的框。这并不需要修改web配置。我试图自动化一个从记录集创建VD的过程,我不能为每个创建一个新的webconfig。谢谢你的帮助。 – 2011-06-03 15:39:22

0

如果你在IIS托管其7+那么你可以使用web.config

放入目录web.config然后添加

<?xml version="1.0"?> 
<configuration> 
    <system.webServer> 
    <httpRedirect enabled="true" destination="/[PathFromRoot]/" childOnly="true" httpResponseStatus="Temporary" /> 
    </system.webServer> 
</configuration> 

您可以在性能here

相关问题