2009-11-30 45 views
0

使用IIS重定向模块重定向与使用Response.context编写自己的代码并进行编码有什么区别?对我来说,它没有什么区别,它们都做同样的事情,只是在IIS中使用重定向模块,因为它看起来相对重定向要容易得多!与此代码相同让我们说global.asax:使用IIS 7重定向模块或自己编码

app.Response.Status =“301永久移动”; app.Response.AddHeader(“Location”,newLocation);

我是不是对吗?你可以用两种不同的方法做同样的事情! IIS或代码!使用IIS只是把它放到你应用程序的web.config中:

<httpRedirect enabled="false" destination="http://www.domainToRedirectTo.com/" exactDestination="false" httpResponseStatus="Permanent" /> 

不错,简单! exactDestination是错误的,所以它将根据目的地进行相对重定向。

我想听到反对使用一种方式与另一种方式的争论,因为我没有看到任何有利于任何方式的论证。两者都符合相同的目标。

回答

1

您放置方式没有区别。编码版本允许您在运行时对输入做出反应,并使用代码将人员重定向到不同的页面 - 例如,对于login.aspx页面,这可能是重定向到login-failed-page.aspxlogin-succesfull-page.aspx。如果它只是硬编码没有区别。

请记住,重定向不仅仅意味着指示URL的永久重定位。 301 is just one of the redirects。您可能希望将用户重定向到临时邮件(重定向代码为307) - 例如,如果您在为苹果工作,并且史蒂夫乔布斯正在发表主题演讲 - 即将该商店重定向到“乔布斯正在发表主题演讲,而我们正在更新商店“页面。在这个例子中,它更好地弹开一个开关,让你的整个web-farm通过运行时逻辑来获取更改,而不必更新所有IIS服务器的配置文件。每个重定向都有其自己的目的。

+0

非常感谢,在这种情况下,我们希望301在此应用程序移动到新域时100%重定向。 – PositiveGuy 2009-11-30 22:05:35

+0

我得到的config.update问题,但无论如何,你将不得不删除或更改代码。无论是在配置中,还是在处理程序类或global.asax中,您都必须通过代码以某种方式处理它。通过web.config是不是更容易,这是一个像这样的东西而不是一个类的中心点?我想这取决于你的部署..你是抄袭程序集,不需要处理web.config,但我想对我来说,这只是“管理”这个设置和这个重定向的两种方式。 – PositiveGuy 2009-11-30 22:07:53

+0

关于网络农场场景非常有趣......我们已经这样做了,但我不明白为什么通过web.config配置它并将其检入到源代码控制并部署web.config是一件大事! – PositiveGuy 2009-11-30 22:08:56