您可能已经注意到,当您调试来自 ASPX 或 ASCX 文件(字面意思,不是来自相应的代码隐藏文件)的错误时,ASP.NET 会显示一个错误页面,显示源文件和所在行发生错误。正在显示的源文件是通过解析页面/控件自动生成的。问题是:如何在不故意导致异常的情况下查看此源文件?
我很想听听有一些编程方式(复杂性无关紧要).cs
从一系列 ASPX/ASCX 文件生成源文件(最好是 )。
例子。考虑以下 ASPX 页面(代码隐藏文件甚至可能不存在):
<%@ Page Language="C#"%>
<%@ Register Assembly="AspxGen" Namespace="AspxGen" TagPrefix="ag" %>
<html>
<head><title>Some Title</title></head>
<body>
<form id="form1" runat="server">
<asp:Label runat="server" Text="<%# ThereIsNoSuchProperty %>" />
</form>
</body>
</html>
当我在浏览器中打开页面时,显示以下错误:ASPX 编译器错误 http://www.ko-sw.com/misc/sc_error_aspx.png
当我单击突出显示的链接时,它会显示发出给 C# 编译器的命令:
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
这意味着,理论上我可以打开传递给编译器的 .CS 文件(即App_Web_sqj3krv3.0.cs
和App_Web_sqj3krv3.1.cs
)并查看 ASP.NET 从我的 ASPX 标记中生成了什么。试图改写上一个问题:如何从任意 ASPX 文件中获取此文件(假设该文件是正确的,因此不会提供有关搜索位置的信息)?
有什么建议吗?