【问题标题】:Is there a way to get rid of aspx placeholder files in a ASP.NET web deployment project?有没有办法摆脱 ASP.NET Web 部署项目中的 aspx 占位符文件?
【发布时间】:2009-01-08 13:32:45
【问题描述】:

我正在使用 Web 部署项目来预编译我的 ASP.NET 3.5 Web 项目。它为 aspx 和 ascx 文件中的代码创建一个额外的 DLL。而且,对于每个 aspx 文件,都有一个占位符 aspx 文件(空)需要复制到服务器。

我想简化部署过程。有没有办法(配置 IIS 站点并添加某种 http 处理程序等)摆脱这些 aspx 占位符

另外,我想知道是否有办法摆脱 bin 文件夹中的 .compiled 文件。这将使部署过程更加顺畅。

谢谢!

【问题讨论】:

  • 我假设将您的网站项目转换为 Web 应用程序的选项不可用?
  • 它已经是一个 Web 应用程序项目。我使用部署来拥有单个 DLL - 因此不需要实际的 aspx、ascx 文件。

标签: asp.net deployment web-deployment-project


【解决方案1】:

我自己发现的。这比我想象的要容易得多(IIS 6.0):

在 Internet 信息管理器中转到站点的属性页,然后选择“主目录”选项卡并单击“配置...”按钮。

单击 .aspx ISAPI 扩展名的“编辑...”并取消选中“验证该文件是否存在”。此时,不再需要 aspx 文件了。

更新

一件重要的事情:我必须在应用程序的根目录中创建一个空的“default.aspx”文件,以便允许像“http://www.example.com/”这样的请求使用默认文档(不调用 aspx)。

更新 2

另一件非常重要的事情:如果您使用的是 ASP.NET Ajax PageMethods,那么您必须保留该页面的 aspx 占位符。如果您省略该文件,浏览器上会抛出一个 javascript 'PageMethods is undefined' 错误。

【讨论】:

  • 谢谢各位。似乎是这样。如果我发现警告等。我会在此答案中通知您。
  • 我的 pagemethods 遇到了一些问题,这与这个技巧有关(我用过一段时间来重写 url)。我不明白你的意思是我的 aspx 占位符。你能解释一下,以便我能够解决我的问题吗?谢谢。
  • 如果您使用 Web 部署项目预编译应用程序,则不再需要实际的 aspx 文件。 (空)aspx 占位符文件被创建。
  • 请问在哪里可以找到 aspx 占位符文件。如果它这么蹩脚,我很抱歉。
  • 我使用的是网站而不是 Web 应用程序项目。
【解决方案2】:

如果可能,那么它至少需要在 IIS 中将所有可能的请求映射到 asp.net 引擎。不是很困难。然后,一个 HttpHandler 应该可以拦截所有传入的请求。然后该处理程序应该能够动态加载已编译的页面类并呈现它们。您基本上只有一个引擎 DLL 来提供页面内容。

但正如您可能已经从所有应该中注意到的那样,这不是一件容易完成的事情,我怀疑它是否真的值得麻烦。这些占位符文件到底有什么问题?

【讨论】:

  • 该项目有数百个aspx文件。如果我可以“复制” DLL 而不是同步大量 aspx 文件,那么部署(在不同位置的许多服务器上)会容易得多...
  • 我看到您已经找到了在 IIS 中执行此操作的方法。但是,请查看 Microsoft 的 robocopy.exe 以供将来参考。它可以自动镜像完整的目录树,因此您无需手动同步任何内容。
  • 是的,我有类似的东西(syncback)。但问题是:在某些服务器上,我必须使用 FTP,并且 Web 部署项目每次都会重新创建这个 aspx 文件。由于我不知道是否有新的 aspx,所以我每次都必须比较它们......哦,我可以告诉你我经历了几个小时的痛苦......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
  • 2016-03-16
  • 2019-05-27
  • 2022-01-10
相关资源
最近更新 更多