マスター ページと子ページを持つアプリケーションがあります。私のアプリケーションは、ローカル ホスト (イントラネット上) で正常に動作しています。しかし、インターネット上のサーバーに置くとすぐに、メニューをクリックした後に以下に示すエラーが表示されます。
コンテンツ コントロールを含むコンテンツ ページで直接使用できるのは、コンテンツ コントロールだけです。
マスター ページと子ページを持つアプリケーションがあります。私のアプリケーションは、ローカル ホスト (イントラネット上) で正常に動作しています。しかし、インターネット上のサーバーに置くとすぐに、メニューをクリックした後に以下に示すエラーが表示されます。
コンテンツ コントロールを含むコンテンツ ページで直接使用できるのは、コンテンツ コントロールだけです。
子ページ全体でコンテンツの開始タグと終了タグを 2 回、3 回チェックします。
彼らが
まったく同じ問題がありました。問題は、コンテンツの終了タグの後にいくつかのスペースがあったことです:
</asp:Content>
最後の終了タグの後のすべてのスペースと改行を削除します。
私は同様の問題に直面していました。コードを「コンテンツ」タグで囲んでいますか?
<asp:Content>Add your HTML here</asp:Content>
また、セクションごとに個別のコンテンツ タグを用意します。ヘッダー宣言の head コンテンツと body 宣言の body コンテンツ。
別の可能性は行末です。Unix スタイルの行末を強制する古いバージョンのコードをソース管理からコピーしました。これはチェックアウトではないため、行末を DOS/Windows スタイルに自動的に変換しませんでした。ページが適切にレイアウトされていても、エラー メッセージは「コンテンツ コントロールのみが直接許可されています ...」というエラーでした。Windows スタイルの改行がないために、ASPX パーサーが失敗したようです。
コードを行末に依存しないエディター (行末が Windows スタイルに正規化される原因) に貼り付け、クリップボードに再コピーして Visual Studio に貼り付けることで修正できました。その後、ページエラーなく処理されました。
質問で Tripati Subudhi が提示したケースでは、デプロイ プロセスに関する何かが誤って Unix スタイルに変換された行末を使用して、エラーが発生した可能性が十分にあります。
もう 1 つの考えられる問題は HTML コメントです。これらはコンテンツ コントロールを囲んでいました。ASP.NET はこれらを舞台裏でリテラル コントロールに変換すると考えています。
私にとっては、同じ ID を持つ 2 つのコンテンツ コントロールでした。ファイルは Visual Studio の外部で編集されていたため、重複した ID の自動名前変更は行われませんでした。この誤解を招くエラーは、最初と同じ ID を持つ 2 番目のコンテンツ コントロール内の最初の画像を強調表示していました。
その時点で VS が重複したコントロール ID の名前を変更したため、ページ全体をコピーしてそれ自体を再投稿すると解決しました。
私にとっては、Assembly と Page ディレクティブがコメントアウトされているのが気に入らなかった:
<%--<%@ Assembly Name="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" %>--%>
<%--<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyPage.aspx.cs" Inherits="MyClass.MyPage" MasterPageFile="~/_layouts/MyProject/MasterPages/MasterPage.master" %>-->
その後、有効な Page ディレクティブがあり、System.Core を何にも使用していませんでしたが。それらを削除しただけで、正常にロードされました。
私のマスターページには、別のページからディレクティブを貼り付けたため、ファイルの先頭に2 つのUTF-8 BOM が含まれていました。<%@ Master %>
それらをバックスペースすることで機能させることができました。