2

我在我的应用程序 web.config 中设置 ExecutionTimeout 元素时遇到了一些问题。

我的页面正在进行长时间的 Web 服务调用,并在 110 秒后超时。(我相信的默认值)。我将值设置为 220,并确保编译 debug=false。

编译设置是指 IIS/ASP.net 在客户端请求它们时编译 ASPX 页面的时间,还是指创建程序集的 Visual Studio 编译过程。

在 Visual Studio 中使用调试构建的程序集是否仍然允许上述设置工作?

4

3 回答 3

2

当人们请求它们时,IIS 不会编译 aspx 页面。如果您在 VS 中有一个“Web 应用程序项目”,您可以在部署之前编译所有代码隐藏和其他类文件。如果您在 VS 中有一个“网站项目”,那么 Web 服务器只会在第一次请求时编译您的应用程序。在其中任何一种情况发生后,应用程序不会再次编译,直到您进行更改。

考虑到上面的信息,这是编译 debug = true | 的时候。false 开始发挥作用。设置 debug = true 后,您可以获得一些关于错误和其他事件的非常详细的信息,但它会使您的应用程序运行速度变慢,因为将调试符号插入到 .dll 中,并且总体而言,它并未针对性能进行优化。通过设置 debug = false,您不会获得完全相同级别的错误报告,但您确实可以恢复性能。

如果您在 VS 中构建,它将根据 web.config 中的设置构建,除非它是您包含的外部 .dll/class 项目。如果是这种情况,web.config 设置对那个 .dll 没有任何意义,并且无论你在这两个项目中使用什么 debug = false|true 组合都会运行。

于 2010-06-23T13:09:50.287 回答
1

编译标签用于添加引用的库以供 IIS 或 Visual Studio 编译,并指定调试和批处理编译模式。

说到debug属性,这里有一篇很好的文章,里面有 Milan Negovan 博客中的所有细节。

关于编译本身。

有3种编译模式。它们在MSDN Overview中有完整的描述。

默认情况下,Web 应用程序使用可更新的预编译:所有.cs文件都编译为一个程序集,但所有页面、控件和母版页都根据需要编译为新的派生类。

网站项目默认使用就地编译。

并且必须明确指定不可更新的完整预编译。在这里,当compilation标签进入时。如果batch="true"应用程序中的所有页面将在第一次请求任何页面时编译。这使我们转向另一个关于大型应用程序的故事:)

请注意,编译模型中还有一些其他细节,如果您真的需要,请查看ASP.NET 预编译概述。

于 2010-06-23T13:45:32.987 回答
0

IIS 在第一次被请求时编译 ASPX 页面(以及 ASCX 用户控件、ASHX、ASMX,...)。它还动态编译:

  • App_Code 文件夹中的代码

  • 网站项目的代码旁边页面中的代码

web.config 中的编译元素指的是这个编译。

如果您在 Visual Studio 中使用 Web 应用程序项目,您的 ASPX 页面将有一个代码隐藏文件。在 Visual Studio 中构建项目时,它会被编译成 DLL,并且不受 web.config 编译元素的影响。

于 2010-06-23T13:24:40.377 回答