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