Вы, наверное, заметили, что при отладке ошибки, которая возникает из файла 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>
Когда я открываю страницу в браузере, отображается следующая ошибка: 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 (при условии, что файл правильный и, следовательно, не будет предоставлена информация о том, где искать)?
Есть какие-нибудь советы по этому поводу?