有没有一种方法可以在ASP.NET Web部署项目中删除aspx占位符文件?

7
我正在使用一个 Web 部署项目 来预编译我的 ASP.NET 3.5 Web 项目。它会为 aspx 和 ascx 文件中的代码创建一个额外的 DLL。而且,对于每个 aspx 文件,都有一个占位符 aspx 文件(空文件),需要复制到服务器上。
我想简化部署过程。是否有一种方法(配置 IIS 站点并添加某种类型的 http 处理程序等)来 摆脱这些 aspx 占位符
另外,我想知道是否有一种方法可以摆脱 bin 文件夹中的 .compiled 文件。这将使部署过程更加顺畅。 谢谢!

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

6

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

在Internet Information Manager中,进入站点的属性页面,然后选择“主目录”选项卡,点击“配置...”按钮。

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

alt text

更新

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

更新2

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


谢谢,miies。看起来是这样的。如果我发现任何注意事项等,我会在这个答案中通知您。 - splattne
我在我的pagemethods中遇到了一些问题,这与我以前用于url重写的技巧有关。我不明白你所说的aspx占位符是什么意思。你能解释一下吗,这样我就能解决我的问题了吗?谢谢。 - Orson
如果您正在使用Web部署项目预编译应用程序,则实际的aspx文件不再需要。将创建(空)aspx占位符文件。 - splattne
我认为这(占位符文件)不适用于网站项目(或者你预编译了它们?那将是不寻常的...) - splattne
抱歉,我没有听说过aspx占位符文件。你知道我可以在哪里获得更多的见解吗? - Orson
显示剩余3条评论

0

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

但正如您可能从所有“应该”的中注意到的那样,这并不是一件简单的事情,我怀疑这真的值得麻烦。这些占位符文件存在有什么问题吗?


该项目有数百个aspx文件。如果我只需“复制”DLL而不是同步大量aspx文件,部署(在不同位置的许多服务器上)将更加容易... - splattne
我看到你已经在IIS中找到了一种方法来实现这个。不过,可以参考一下微软的robocopy.exe。它能够自动镜像完整的目录树,这样就不必手动同步任何东西了。 - user39603
是的,我有类似的东西(syncback)。但问题是:在一些服务器上,我必须使用FTP,并且Web部署项目每次都会重新创建这些aspx文件。由于我不知道是否有新的aspx文件,因此每次都必须进行比较...哦,我可以告诉你我经历了多少痛苦的小时... - splattne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接