C# 访问从ASPX/ASCX文件生成的源代码

C# 访问从ASPX/ASCX文件生成的源代码,c#,asp.net,code-generation,ascx,C#,Asp.net,Code Generation,Ascx,您可能已经注意到,当调试来自ASPX或ASCX文件的错误时(确切地说,不是来自相应的代码隐藏文件),ASP.NET会显示一个错误页面,显示源文件和发生错误的行。正在显示的源文件是通过分析页/控件自动生成的。问题是:如何在不故意引起异常的情况下查看此源文件? 我很想听到有一种编程方式(复杂性无关紧要)从一系列ASPX/ASCX文件生成源文件(最好是.cs) 示例。考虑下面的ASPX页面(后面的代码甚至可能不存在): 这意味着,理论上我可以打开传递给编译器的.CS文件(即,App_Web_sqj3k

您可能已经注意到,当调试来自ASPX或ASCX文件的错误时(确切地说,不是来自相应的代码隐藏文件),ASP.NET会显示一个错误页面,显示源文件和发生错误的行。正在显示的源文件是通过分析页/控件自动生成的。问题是:如何在不故意引起异常的情况下查看此源文件?

我很想听到有一种编程方式(复杂性无关紧要)从一系列ASPX/ASCX文件生成源文件(最好是
.cs

示例。考虑下面的ASPX页面(后面的代码甚至可能不存在):

这意味着,理论上我可以打开传递给编译器的.CS文件(即,
App_Web_sqj3krv3.0.CS
App_Web_sqj3krv3.1.CS
)并查看ASP.NET从我的ASPX标记生成了什么。尝试重新表述前面的问题:如何从任意ASPX文件中获取此文件(假设该文件正确,因此不会给出搜索位置的信息)?


有什么提示吗?

您是否正在使用visual studio编写代码?如果是这样,您可以使用代码隐藏功能为aspx页面编写代码,该功能会生成一个.cs文件。

ASP.Net页面、用户控件等都是“根据请求编译”的。您看到的错误可能是“编译失败”,而不是运行时失败

您可以使用aspnet_compiler.exe“预编译”您的网站。这将生成包含已编译类的“占位符”.aspx文件和程序集

使用此工具,您将能够确定编译是否失败(使用aspnet_compiler.exe进行预编译也很可能失败)。否则,只剩下包含类的纯程序集,这些类可以使用“Reflector”之类的工具进行反编译


希望这有帮助,

您可以在以下目录中找到生成的代码:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET文件

要确定确切的路径,请使用以下代码段

System.Web.HttpRuntime.CodegenDir
ASP.NET使用和
CodeDOM
为WebForms/UserControl生成代码。您可以创建自定义BuildProvider来为特定扩展生成自定义代码。有关更多信息,请参阅下面的文章


看起来我对这个问题有点不清楚。我将尝试重新措辞。只需重新阅读问题-您是否使用内联c#编写asp代码?不,我使用Visual Studio编写ASPX和ASPX.CS文件。我只将标记放在ASPX中,并将所有逻辑放在业务层或相应的代码隐藏文件中。我只需要在解析页面时访问从ASPX页面生成的文件。我编辑了这个问题,以便更好地解释我需要什么。你说的是另一个话题。
C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE>
   "c:\WINDOWS\Microsoft.NET\Framework\v3.5\csc.exe" /t:library /utf8output
   /R: REFERENCES GO HERE
   /debug- /optimize+ /w:4 /nowarn:1659;1699;1701 /warnaserror-
  "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\f66a2574\25dd72a2\App_Web_sqj3krv3.0.cs"
  "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\f66a2574\25dd72a2\App_Web_sqj3krv3.1.cs"


Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.1
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.

d:\Dev\AspxGen\AspxGen\Default.aspx(9,80): error CS0103: The name 'ThereIsNoSuchProperty' does not exist in the current context
System.Web.HttpRuntime.CodegenDir