1

SharePoint 2010 内の aspx ページで C# コードを使用しようとしています。「コード ブロックは許可されていません」というエラーが表示され続けます。

(server)/SitePages/ajax.aspx にある私の aspx ページ: (重要な場合は SharePoint Designer 2010 で編集)

<%@ Page Language="C#" %>
<script runat="server">
    Response.Write("Hello world");
</script>

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\CONFIG の web.config に以下を追加しました。

<PageParserPath VirtualPath="/SitePages/ajax.aspx" CompilationMode="Always" AllowServerSideScript="true" />

これは、web.config に追加したのと同じ行をコンテキストで示したものです。

<SharePoint>
  <SafeMode 
        MaxControls = "200"  
        CallStack = "false"
        DirectFileDependencies ="10"
        TotalFileDependencies = "50"
        AllowPageLevelTrace = "false"
        >
        <PageParserPaths>
            <PageParserPath VirtualPath="/SitePages/ajax.aspx" CompilationMode="Always" AllowServerSideScript="true" />
        </PageParserPaths>

それでも「コード ブロック」エラーが表示されるのはなぜですか? どこかに別のセキュリティスイッチがありますか?

(カスタム Web パーツが推奨されるソリューションであることはわかっていますが、戻り値は json である必要があるため、ここでは十分ではないと思います。これは、データを取得するために ajax 経由でヒットするページです。)

4

2 に答える 2

0

C:\ inetpub \ wwwroot \ wss \VirtualDirectories[アプリケーションフォルダー]\web.configにあるWebアプリケーションweb.configでPageParserPath要素を定義する必要があると思います。

于 2012-11-14T18:21:59.780 に答える
0

aspx ページをドキュメント ライブラリにアップロードするとき (これは、SharePoint Designer を使用するときに行っていることです)、その aspx ページにインライン コード ブロックを含めることはできず、コード ビハインドを含めることもできません。これは主にセキュリティ メカニズムです。これにより、古いユーザーが悪意のあるコンテンツを含む aspx ページをアップロードし、サーバー上で完全な権限で実行され、(潜在的に) 任意のユーザーにコンテンツが提供されるのを防ぎます。

aspx ページでコードを実行するには、ページを WSP にコンパイルし、サーバー上の GAC に展開する必要があります。その場合、インライン コード ブロックを使用するか、コード ビハインドを含む aspx ページを使用することをお勧めします。そのページをサイトに公開するには、Visual Studio でプロジェクトを WSP にコンパイルし、十分な権限でマシンにログインしてサーバーに展開し、コードを追加して展開する必要があります。これにより、開発者以外が実行可能コードをサイトにアップロードできないようになります。

最後に、もっと関係のないことですが、実際にはページを表示するのではなく、JSON コンテンツだけを表示したいので、おそらく aspx ページをまったく使用しないでください (ただし、使用できます)。おそらく、適切なコンテンツを書き出す HTTP ハンドラーまたは Web サービスを作成する必要があります。

于 2012-11-14T18:13:38.610 に答える