4

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) を開いて、ASPX マークアップから ASP.NET が生成したものを確認できます。前の質問を言い換えてみます:任意の ASPX ファイルからこのファイルを取得する方法は?

それに関するヒントはありますか?

4

3 に答える 3

3

生成されたコードは、次のディレクトリ内にあります。

C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET ファイル

正確なパスを特定するには、次のコード スニペットを使用します。

System.Web.HttpRuntime.CodegenDir

ASP.NET はBuildProviderを使用CodeDOMし、WebForms/UserControls のコードを生成します。カスタム BuildProvider を作成して、特定の拡張機能のカスタム コードを生成できます。詳細については、次の記事をご覧ください。

http://aspalliance.com/1102

于 2010-03-03T19:29:49.890 に答える
0

Visual Studioを使用してコードを記述していますか?その場合は、.csファイルを生成するコードビハインド機能を使用してaspxページのコードを記述できます。

于 2010-03-03T18:58:21.957 に答える
0

ASP.Net ページ、ユーザー コントロールなどは、「要求に応じてコンパイル」されます。表示されるエラーは、おそらくランタイム エラーではなく、「コンパイル エラー」に関するものです。

aspnet_compiler.exe を使用して、Web サイトを「プリコンパイル」できます。これにより、コンパイルされたクラスを含む「プレースホルダー」.aspx ファイルとアセンブリが生成されます。

このツールを使用すると、コンパイルが失敗しているかどうかを判断できます (同様に aspnet_compiler.exe を使用したプリコンパイルも失敗する可能性が非常に高くなります)。そうしないと、「Reflector」などのツールを使用して逆コンパイルできるクラスを含む純粋なアセンブリが残ります。

お役に立てれば、

于 2010-03-03T19:07:48.060 に答える