2012-11-14 23 views
1

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

位于(服务器)/SitePages/ajax.aspx我的aspx页面:(SharePoint Designer 2010中编辑,如果它事项)

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

我说在C以下到web.config中:\ Program Files文件\ Common Files文件\ Microsoft共享\ Web服务器Extensions \ 14 \ 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获得的数据命中。)

回答

0

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

0

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

对于执行代码的aspx页面,它需要编译到WSP中并部署到服务器上的GAC。当你这样做时,你可以使用内联代码块,或者更好的是,有一个代码隐藏的aspx页面。要将该页面发布到网站,您需要将Visual Studio中的项目编译为WSP,通过以足够的权限登录到计算机来将其部署到服务器,然后添加和部署代码。这可确保非开发人员无法将可执行代码上传到您的网站。最后,在一个更加不相干的笔记上,既然你实际上并不想显示一个页面,但只是JSON内容,你可能根本不应该使用一个aspx页面(尽管你可以使用可以)。你应该创建一个HTTP处理程序或者一个Web服务来写出适当的内容。

+0

这当然是最佳做法的答案,但它是可能的(见德米特里的答案) – user1472408