SDL Tridion C#代码片段can';在上下文中找不到引擎、包或日志字段

SDL Tridion C#代码片段can';在上下文中找不到引擎、包或日志字段,c#,tridion,C#,Tridion,我对Tridion开发非常陌生,我有我的第一个“基本”问题。 我在TBB(使用content manager文本编辑器)中编写了一个简单的C#代码片段,并尝试使用引擎、包和日志字段(据我所知,它们是由Tridion提供的),但我收到一个错误,说“上下文中不存在名称”。 代码如下: <%@ Page Language="C#" ContentType="text/html" ResponseEncoding="utf-8" %> <div> <!--

我对Tridion开发非常陌生,我有我的第一个“基本”问题。 我在TBB(使用content manager文本编辑器)中编写了一个简单的C#代码片段,并尝试使用引擎、包和日志字段(据我所知,它们是由Tridion提供的),但我收到一个错误,说“上下文中不存在名称”。 代码如下:

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="utf-8" %>
<div>
        <!-- TemplateBeginRepeat name="Component.Fields.crociera" -->
              <!-- TemplateBeginIf cond="prezzo<250" -->
                     Go to @@location@@<br/>
              <!-- TemplateEndIf -->
        <!-- TemplateEndRepeat -->
</div>
<%
String ts = DateTime.Now.ToString("d MMM yyyy");
Response.Write("<br/>"+ts);
engine.getSession();
%>

转到@@location@@@br/>
当我保存TBB并发布页面时,我收到以下错误:

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS0103: The name 'engine' does not exist in the current context

Source Error:


Line 31: Response.Write("<br/>"+ts);
Line 32: engine.getSession();
Line 33: %>                         
Line 34:                  </div>

Source File: c:\inetpub\wwwroot\stage\pj\ricerca\ricerca.aspx    Line: 32 
编译错误
描述:编译服务此请求所需的资源时出错。请查看以下特定错误详细信息,并适当修改源代码。
编译器错误消息:CS0103:当前上下文中不存在名称“引擎”
源错误:
第31行:Response.Write(“
”+ts); 第32行:engine.getSession(); 第33行:%%> 第34行: 源文件:c:\inetpub\wwwroot\stage\pj\ricerca\ricerca.aspx行:32

可能我错过了什么或做了什么错事,有人认识到这个问题吗?

你可以在找到关于如何正确创建C片段的信息。你使用的
引擎
对象是Tridion的TOM.NET API的一部分,只有在发布项目时你的代码才可以使用它

一旦ASPX页面到达前端服务器,TOM.NET API就不再可用。部分原因是Tridion内容管理器无法再从web服务器访问


您不需要通过Tridion Content Manager的TOM.NET API对其进行编程,而需要通过其API对Tridion内容交付进行编程。您可以在中找到常见案例的文档(需要登录)。

您是否创建了DWT模板或C#fragment?这两种语言的语法混在一起了。它不起作用,因为您以这种方式混合了两种不兼容的内容。从错误消息底部的
源文件
标记来看,这似乎不是TBB,而是网站中的一个ASPX页面。我创建了一个DWT模板,但除了“engine.getSession()”语句外,所有C#都可以正常工作。我是否必须将其声明为C#代码片段并删除所有HTML和DWT脚本代码?听起来您已经将代码添加到DWT中,以便将其发布到ASPX文件中。对吗?如果是这样,那你就做错了。模板代码不是在您的网站上执行的,而是由SDL Tridion中的呈现引擎执行的。使用的页面模板的文件扩展名是无关的。在发布的输出到达目标web服务器之前,Tridion渲染引擎将在模板(CT或PT)的上下文中执行C#片段中的代码。你的C#代码甚至可能是正确的(只要它不是你上面发布的片段)。谢谢Jeremy,我已经阅读了sdllivecontent“C#片段脚本语法”部分,但即使我在TBB中复制/粘贴代码,我也会收到相同的编译时错误。