SharePoint 2010允许特定页面的代码块

时间:2012-11-14 18:04:16

标签: c# sharepoint-2010 codeblocks

我正在尝试在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来获取数据的页面。)

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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