【问题标题】:SharePoint 2010 Allow Code Blocks for a specific pageSharePoint 2010 允许特定页面的代码块
【发布时间】:2012-11-03 06:55:56
【问题描述】:

我正在尝试在 SharePoint 2010 的 aspx 页面中使用 C# 代码。我不断收到“不允许代码块”错误。

我的 aspx 页面位于(服务器)/SitePages/ajax.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 访问以获取数据的页面。)

【问题讨论】:

    标签: c# sharepoint-2010 codeblocks


    【解决方案1】:

    当您将 aspx 页面上传到文档库时(这是您在使用 SharePoint Designer 时所做的),该 aspx 页面不能有内联代码块,也不能有代码隐藏。这主要是一种安全机制。它可以防止任何老用户上传带有恶意内容的 aspx 页面,然后这些恶意内容将在您的服务器上以完全权限执行,并且还向(可能)任何用户提供内容。

    对于执行代码的 aspx 页面,需要将其编译成 WSP 并部署到服务器上的 GAC。当您这样做时,您可以使用内联代码块,或者更好的是,拥有一个带有代码的 aspx 页面。要将该页面发布到站点,您需要将 Visual Studio 中的项目编译为 WSP,通过以足够权限登录机器将其部署到服务器,然后添加和部署代码。这可确保非开发人员无法将可执行代码上传到您的网站。

    最后,在一个更不相关的说明中,由于您实际上并不想显示页面,而只是显示 JSON 内容,因此您可能根本不应该使用 aspx 页面(尽管您可以 )。您可能应该只创建一个 HTTP 处理程序或一个 Web 服务来写出适当的内容。

    【讨论】:

    • 这当然是最佳实践答案,但有可能(参见 Dmitry 的答案)
    【解决方案2】:

    我想,您必须在位于 C:\inetpub\wwwroot\wss\VirtualDirectories[应用程序文件夹]\web.config 的 Web 应用程序 web.config 中定义 PageParserPath 元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 1970-01-01
      相关资源
      最近更新 更多