您应该编写ASP.NET站点以便它们可以存在于VDIR中吗?

时间:2009-08-26 22:51:32

标签: asp.net iis

回到Visual Studio Web Server之前的几天,我们将在IIS中托管我们的本地开发人员。如果您的工作站版本的IIS只意味着一个网站。如果您在多个网站上工作怎么办?简单:在VDIR中创建它们,例如http://localhost/ProjectAhttp://localhost/ProjectB

生活在VDIR听起来并不那么难。确保所有图像/ CSS /链接都是相对路径,使用“〜”很多。听起来像是一个很好的做法。硬编码图像等因此它们仅在应用程序从“/”提供时才起作用听起来像是一种不好的做法。

在任何地方你都需要建立一个链接(通常不是常见的场景):

所以......你这样做吗?优点缺点?我错过了其他任何陷阱?

2 个答案:

答案 0 :(得分:1)

除非有特殊原因,否则我总是避免使用硬编码路径,URL等。事情不可避免地会发生变化,而且从开发站点到生产阶段总是会有所改变。

通常最大的麻烦部分是需要引用其他路径的可重用客户端行为,并且它们本身可以在应用程序目录结构的页面中重用。

我喜欢响应“globalvars.ashx”的想法处理程序(或类似的东西;有很多方法可以处理它),它动态地发出(并允许缓存)有关全局应用程序属性的属性。

假设负责globalvars.ashx的处理程序写出类似这样的结果:

String.Format("var ApplicationProperties = {{ RootPath:{0} }};", Request.ApplicationPath);

理论上,您的JS行为可以通过ApplicationProperties.RootPath在任何时候引用该属性对象。

答案 1 :(得分:1)

简而言之,。不这样做的缺点超过了好处。我实际上认为你的前两点也可以通过使用app相对路径(“〜”)来减轻,但是,某些场景,如“集成级别”(如PayPal)可能确实很棘手。

但最终,如果您需要在虚拟目录中托管您的应用程序,如果您还没有将应用程序编码为vdir-friendly,那么几乎可以确保您遇到问题。我知道我有。

一些背景/背景:我当前的生产环境几乎总是一个虚拟目录,所以我必须这样做。当应用程序创建为根级网站时,我从未遇到过问题。如果是相反的话,情况肯定不会如此。