1

我有一个 Web 应用程序,它位于我公司的共享托管平台上。该平台具有全局页眉/页脚代码,平台上的所有应用程序都使用包含文件使用这些代码。我无法更改头文件的结构以及它们的使用方式——这是由另一组指定给我的。我有一个没有按设计安装 IIS 的构建服务器。我试图在构建过程中使用 aspnet_compiler.exe 来生成用于部署的预编译网站文件。

但是,当构建运行时,我会收到如下错误:

/Company/Controls/Header.ascx(7):错误 ASPPARSE:无法映射路径“/sites/header.inc”。

Header.ascx 控件在 HTML 中有这个服务器端包含:

<!-- #include virtual="/sites/header.inc" -->

在我的本地机器上,我在 IIS 中创建了一个名为“sites”的虚拟目录,它指向全局标头代码(我也已将其复制到我的本地机器上)。这个相同的“站点”虚拟存在于托管环境的 IIS 中。我真的很想避免在构建机器上安装 IIS,因为它是一个共享的构建机器,我没有人会错误地将 IIS 依赖项添加到他们的代码中。构建机器不需要有 IIS。

在不安装 IIS 的情况下获取 aspnet_compiler.exe 在构建期间生成的预编译站点文件的最佳方法是什么?

4

3 回答 3

1

微软有一个非常简单的例子来说明如何替换包含语句......

http://support.microsoft.com/kb/306575

查看错误的路径,您似乎已经在使用某种全局用户控件,我猜这是一个被其他应用程序或语言重用的文件,所以我建议提出一个更自定义的错误处理版本等等,因为它正在映射驱动器上工作,但基本答案是您需要在 Render 事件期间读取文件并将其输出到流中。

于 2009-12-12T00:30:09.447 回答
0

不要使用服务器端包含。它们是古老的技术,在大多数现代网站上都被禁用。

我建议您改为创建 .ascx 文件来替换每个 .inc 文件,并改用这些文件。

于 2009-12-12T00:22:20.247 回答
0

尝试这个:

<!-- #include virtual="~/sites/header.inc" -->

~ 是“Web 应用程序的根目录”的快捷方式。

于 2012-03-07T18:21:13.403 回答