web-dev-qa-db-ja.com

ASP.NETエラー「ファイル 'nnn.aspx'はプリコンパイルされていないため、要求できません。」の修正方法

「Webサイトの公開」を使用して公開するVS 2005 Webサイトがあり、3つのチェックボックスをすべてオフにします。また、公開されたファイルを取得してMSIを作成する展開プロジェクトもあります。次に、パッケージを別のテストサーバーにインストールします。

つまり、サイト全体がプリコンパイルされます。ただし、「Services」という名前の特定のサブフォルダーにある.aspxファイルにアクセスすると、HttpExceptionが発生します。

System.Web.HttpException:ファイル '/myapp/Services/mypage.aspx'はプリコンパイルされていないため、要求できません。

ルートまたは他のサブフォルダーである他のフォルダーの.aspxファイルに移動すると、正常に機能します。

Mypage.aspx自体の内容は次のとおりです。<%@ Page Language="C#" AutoEventWireup="true" CodeFile="mypage.aspx.cs" Inherits="Services_mypage" %>"

の中に /myapp/binフォルダmypage.aspx.989dc2fb.compiledファイル。この内容は、binフォルダーにも存在する特定のアセンブリを指しているようです。

このエラーが発生するのはなぜですか? .compiledファイルがあり、Assemblyがあり、問題のタイプがそのAssemblyにあります(Object Browserで確認できます)。 .compiledファイルの名前または内容に関するものですか?何とか間違ったバージョンを持っていますか? .compiledファイル名に含まれる一見ランダムな数字は何を意味し、重要ですか?

また、この問題が突然発生したことにも言及したいと思います。数日前に正常に機能して以来、どのような変更が行われたのかわかりません(ただし、私の知る限りではありません)。

40
jonsb

私はそのエラーはありませんでしたが、少しグーグルでこのリンクを見つけた後、あなたはまだそれを見たかどうかわかりません: http://forums.asp.net/t/956297。 aspx

編集(キーテキストを追加):

このエラーは、web.configで参照が指定され、システムにインストールされたこれらのdllが展開フォルダー/サイトに含まれていないか、binフォルダーにそれらが含まれていない場合(プライベートアセンブリの場合)に発生します。例:(Assembly = "Namespace1.NameSpace2、Version = xxxx、Culture = neutral、PublicKeyToken = 31bf3856ad364e35" /)を追加します。web.configにこのようなアセンブリが含まれ、展開されたサーバーにこれらのアセンブリがbinまたはGACに含まれない場合、これはエラーが発生します。

宛先サーバーでアセンブリが見つからないことが根本的な原因であると報告されましたが、彼らと同じエラーが発生しました。奇妙な。

たぶんそれが問題ですか?

23
Carl

サイトを2.0から4.0にアップグレードしたときにこのエラーが発生しました。エラーの原因はファイルPrecompiledApp.configサイトのrootディレクトリにあります。そのファイルを削除すると、サイトが機能し始めました。

21
Gath Adams

上記のすべての回答の脚注として、不足しているアセンブリを置き換えるために再公開することで問題を解決しました...同じ問題で以前にこの問題を解決しましたが、他の人を助ける可能性のある別の理由が発生しました。

私のサイトが実行されているAppPoolの「32ビットアプリケーションを有効にする」設定がfalseに設定されていました。アプリプールの[詳細設定]ダイアログでこれをtrueに変更することで、問題を解決しました。

他のいくつかの貧しい吸盤を助けることを願っています。

19
krisg

私は過去数日間、この問題を解決するのに苦労してきました。少なくとも私の場合、エラーメッセージは完全に誤解を招くものであり、プリコンパイルされたWebサイトとは何の関係もありませんでした。混乱を招くだけのさまざまな回答を提供する多くの記事や投稿があります。個人的には、このエラーは主に参照の欠落またはバージョン管理の誤りが原因であると考えています。問題をできるだけ早く修正するには、これを除外するか、見つからない/間違った参照を修正する必要があります。

そのためには、「アセンブリバインディングログビューアー」という名前のツールを使用する必要があります。このツールは、どの参照が欠落しているか、バージョンが間違っているかを示します。参照の欠落/不一致がある場合は、先に進み修正します。それ以外の場合は、アプリケーションプールが32ビットであるかアクセス許可を確認するなど、他の手品を行う必要があります。

手順:

  1. サーバーで次のフォルダーを作成します

    C:\ fuslog C:\ fuslog\logs

  2. アセンブリバインドログビューアをサーバーのC:\ fuslogにコピーします。

    このような場所でプログラムを見つけることができます

    C:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\Bin\fuslogvw.exe

    「Program Files(x86)」ではなく「Program Files」を調べるか、「v7.0A」ではなく別のバージョンを調べる必要がある場合があります。

  3. サーバーでfuslogvw.exeを実行します

  4. 「設定...」をクリックします

  5. 「ディスクへのバインド失敗のログ」がチェックされていることを確認します

  6. [カスタムログパスを有効にする]をオンにして、ボックスに次を入力します。C:\ fuslog\logs

  7. OKをクリックします

  8. アプリプールをリサイクル/リセットして、新しいバインディングを強制する

  9. 更新をクリックします。ここで、失敗したバインディングをここで見ることができます

  10. 正確なバインディングを見つけるより良い方法は、c:\ fuslog\logs\Defaultに移動することです。ここで、正確なバインディングの失敗を見つけることができます。一部は無関係であり、試行錯誤によって重要なものを見つける必要があります。私の次の失敗は:

     System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35
    

Webサイトweb.configに次のエントリを追加して、問題を修正しました。

<configuration>
    ...
    <runtime>
        ...
        <!-- Added this entry to fix the issue -->
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.0" />
        </dependentAssembly>
        ...
    </runtime>
    ...
</configuration>

これが他の人が問題を迅速に解決するのに役立つことを願っています。

8
Aidin

私は同じ問題に遭遇しました。私の問題は、このフォルダー内の一時的なasp.netファイルフォルダー内のファイルを削除することで修正されました。

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root 
6

このエラーは私に発生し、私はそれを解決しました。

サイトを公開する場合は、Visual Studioで固定命名と単一ページアセンブリを使用するをオンにします

この問題は解決されるでしょう!

5
aws

他のソリューションをいくつか試した後、AppPoolを再起動することでこれを修正しました。この場合、再発行はオプションではありませんでした。

3
Justin

MSIで欠落している(Web以外の)DLLであることが判明しました。ページは確かにプリコンパイルされましたが、そのDLLへの参照が欠落していました。

3
jonsb

このオプションは私のために問題を解決しました。基本的に、前回のデプロイ後に残ったすべての孤立ファイルを削除します。

Remove additional files at destination

2
Ivan Nikitin

今日も同じ問題がありました。いくつかのフォーラムは、あなたのウェブサイトに参照が欠落していることを伝えており、それは確かにあなたの場合にそうです。必要なすべてのアセンブリが含まれているにもかかわらず、3.5フレームワークを搭載したIISサーバーにWebサイトをデプロイしているのではないでしょうか。

私の場合はそうだったので、元のASPX 3.5 Webサイトからweb.configファイルをコピーし、一部を変更(他の3.5アセンブリ参照を削除)して、もう一度展開してみました。

私の場合、同じファイルを再展開するとこの問題も修正されました。

そのため、他のことを試みる前に、最初にアプリを再度デプロイしてみてください(ビンフォルダのコンテンツで十分です)

ところで:私の場合、エラーはCドライブの容量が足りなくなったときに始まりました。

ハッピーコーディング!チテック

1
ChiTec

私はエラーが他の何かについて不平を言っていることを知っていますが、私の場合、問題は不十分なアクセス許可(ネットワークサービスまたはアプリケーションプールIDまたはIUSR)であり、asp.netアカウントがその特定のファイル。

これは、異常な展開と、VPS環境でのbinファイルと新しい公開ファイルとの混合が原因でした。

ソリューション

その特定のファイルのアクセス許可は、Bin内で正しく機能している(およびそのエラーを含む)他のファイルのような正しいBinフォルダーのアクセス許可に置き換える必要があります。

enter image description here

1
Iman Abidi

使用可能なディスク容量を確認することから始めます。 IISをホストしているハードドライブの領域が不足すると、このエラーが発生しました。

1

既存のサイトにいくつかの変更を展開したときに、この問題に直面していました。

問題から回復するには、binフォルダーからすべてのファイルを削除し、再展開しました。

その後、問題は解決しました。

これが何らかの助けになることを願っています。

0
WeHelps

最後に、問題が見つかりました。私のようなMVCフレームワークを使用している場合は、MVCバージョンを更新してください。私の場合、MVC 4.0.0.0を4.0.0.1に変更し、すべてのプロジェクト参照の「ローカルコピー」プロパティを「True」にチェックしました。その後、私の問題は解決しました。すべての設定ファイルでMVCバージョンを確認してください(4.0.0.0-> 4.0.0.1)

そして、aspコンパイラの警告メッセージに注意してください。

0
Alim İŞÇİ

MSBuildスクリプトの実行中にこのエラーが発生した場合、プロジェクトが2.0または3.5プロジェクトであり、MSBuildが4.0コンパイラを使用している可能性があります。 TargetFrameworkMoniker = "3.5"をAspNetCompilerディレクティブに追加してみてください。

0
user432578

このエラーは、プロジェクトの一部ではなくなったページのビンに.compiledファイルがある場合にも発生する可能性があります。本質的に404の代わりにこれを受け取ります。 .compiledファイルを削除すると、404が取得されます。

0
Licht

更新してから再コンパイルする場合。 binフォルダーからすべてのファイルを再度コピーし、それぞれのフォルダーから更新された特定のファイルもコピーします。

0
sunil-natsun

私の場合、同じJenkinsワークスペースで2つの同時ジョブを実行したため、「nnn.aspx.xxxxxxxx.compiled」ファイルはWebDeployによって削除されました。 2番目のジョブは、WebDeployパッケージの作成中にいくつかのファイルを削除しました。

0
Der_Meister

Asp.net mvc razorビュー(.cshtml)のエラーの場合、/ binフォルダーには同じビューの2つの.compiledファイルが含まれていました。それらの1つは古く、削除する必要がありました。

また、コントローラービューのサブフォルダーに、削除する必要がある2番目のビューがありました。

問題の理由は、ビューをコントローラービューのサブフォルダーから共有フォルダーに移動したが、展開プロセス(Visual Studio Publish)が古いビューとview.compiledファイルをサーバーから削除しなかったためです。常に宛先フォルダーをクリーンアップするようにVisual Studioに指示できますが、これにより展開プロセスが遅くなります。

0
Klotin

VWD Express 2012の使用を開始したときに同じ問題が発生しました(以前は正常に機能していたExpress 2010を使用していた後)。問題はなくなりました。

0
Khalid Gomaa

これがVS 2008のソリューションです。

問題を解決するには、以下に示すようにボックスにチェックマークを付けてください。

enter image description here

0
Anson Davis