您是否应该对ASP.NET站点进行编码,以便它们可以在VDIR中生存?

您是否应该对ASP.NET站点进行编码,以便它们可以在VDIR中生存?,asp.net,iis,Asp.net,Iis,早在VisualStudioWeb服务器出现之前,我们就将本地开发人员托管在IIS中。如果您有IIS的工作站版本,则表示只有一个网站。如果你在几个网站上工作呢。简单:在VDIRs中创建它们,例如 住在VDIR里听起来并不难。确保所有图像/CSS/链接都是相对路径,经常使用“~”。听起来是个不错的练习。硬编码图像等,因此它们只在从“/”提供应用程序时工作听起来像是一种糟糕的做法 在构建链接的任何地方都有一些细微差别(大多数不是常见的场景): eg;PROD:->DEV: 电子邮件中的链接/图像

早在VisualStudioWeb服务器出现之前,我们就将本地开发人员托管在IIS中。如果您有IIS的工作站版本,则表示只有一个网站。如果你在几个网站上工作呢。简单:在VDIRs中创建它们,例如

住在VDIR里听起来并不难。确保所有图像/CSS/链接都是相对路径,经常使用“~”。听起来是个不错的练习。硬编码图像等,因此它们只在从“/”提供应用程序时工作听起来像是一种糟糕的做法

在构建链接的任何地方都有一些细微差别(大多数不是常见的场景):

  • eg;PROD:->DEV:
  • 电子邮件中的链接/图像
  • flash/javascript/silverlight从包含图像链接的服务器请求数据
  • PayPal IPN的完整链接(PayPal页面也会发布他们的回复)

所以。。你在这么做吗?优点/缺点?我还错过了其他的陷阱吗?

我总是避免硬编码的路径、URL等,除非有特殊的原因。事情不可避免地会发生变化,从开发站点到生产站点总是会发生跳跃

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

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

假设负责globalvars.ashx的处理程序写入如下结果:

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

理论上,您的JS行为可以通过
ApplicationProperties.RootPath
在任何时候引用该属性对象。简而言之,yes。不这样做的弊大于利。实际上,我认为使用应用程序相对路径(“~”)也可以在很大程度上缓解您的前两点,但尽管如此,一些场景,例如“集成级”(如PayPal)可能确实很棘手

但归根结底,如果你需要把你的应用程序放在一个虚拟目录中,如果你一开始就没有将你的应用程序编码为对vdir友好的,那么你几乎肯定会遇到问题。我知道我有

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