3

除了安装了 Tridion CMS 的机器上,我无法找到使用核心服务创建的任何项目(模式/组件),但是当我在使用相同控制台应用程序安装了 Tridion CMS 的机器上创建任何项目时,我能够使用 TCM URI 找到该特定项目。是否需要在配置文件中定义任何配置(我认为这个问题与刷新或清除浏览器缓存无关)以及当 TCM URI 也从其他机器生成时,即使从 CMS 服务器所在的位置也无法搜索该项目安装。请建议...

更多信息:-

我正在研究 SDL Tridion 2011 GA,下面是创建我正在使用的组件的示例代码:-

public static string CreateComponentStack(string folderUri, string title,
                                          string schemaID)
{
    core_service.ServiceReference1.SessionAwareCoreService2010Client client = 
        new SessionAwareCoreService2010Client();
    client.ClientCredentials.Windows.ClientCredential.UserName = "myUserName";
    client.ClientCredentials.Windows.ClientCredential.Password = "myPassword";
    client.Open();

    ReadOptions readoptions = new ReadOptions();

    string TargetFolderTcmId = folderUri;
    string LinkSchemaTcmId = schemaID;
    ComponentData CurrentMigrationComponent = client.GetDefaultData(
                ItemType.Component, TargetFolderTcmId) as ComponentData;
    LinkToSchemaData SchemaToUse = new LinkToSchemaData();
    SchemaToUse.IdRef = LinkSchemaTcmId.ToString();
    CurrentMigrationComponent.Schema = SchemaToUse;
    CurrentMigrationComponent.Title = title;
    XmlDocument doc = new XmlDocument();

    doc.LoadXml("<Content xmlns='uuid:7289aba9-16de-487c-9142-f6f97dbd2571'>"+
                "</Content>");

    CurrentMigrationComponent.Content = doc.DocumentElement.OuterXml;
    string newTCMID = client.Create(CurrentMigrationComponent, readoptions).Id; 
    Console.WriteLine(CurrentMigrationComponent.Id);
    Console.ReadLine(); 
    return newTCMID; 
}
4

3 回答 3

8

该项目要么存在,要么不存在。它不是用任何你似乎正在经历的“创造环境”的知识来创造的。

您确定该项目是在您正在查看的同一出版物中创建的吗?物品是否已托运?

如果不是这样,我建议与我们分享您的代码的关键部分:可能是创建连接并在其上设置用户凭据的部分(当然,删除实际值)以及调用Save,UpdateCreate上的方法CoreServiceClient

更新

您添加的代码对我来说看起来不错。但是您可能需要检查以下几点:

string newTCMID = client.Create(CurrentMigrationComponent, readoptions).Id; 
Console.WriteLine(CurrentMigrationComponent.Id);

鉴于您正在创建一个新组件,带有的变量CurrentMigrationComponent具有。你得到什么价值?如果您搜索该 TCM URI(使用 GUI 中的搜索功能),它会找到任何东西吗?Idtcm:0-0-0newTCMID

于 2012-08-29T11:19:58.640 回答
3

当您说“其他机器”时,您是指运行核心服务客户端控制台应用程序的其他服务器吗?检查机器是否在同一个网络域中,并且您可以从它们连接到 Tridion。还要检查是否有任何网络策略限制阻止服务器机器上的传出 http 请求。

如果您提供您得到的错误输出,这将有所帮助。

于 2012-08-29T12:45:08.160 回答
0

请检查您的 app.config 文件中的部分,可能是您映射到 localhost 的端点。

<client>
            <endpoint address="http://[ur]/webservices/CoreService.svc/basicHttp_2010"
                binding="basicHttpBinding" bindingConfiguration="basicHttp_2010"
                contract="CoreService.ICoreService2010" name="basicHttp_2010" />
            <endpoint address="http://[ur]/webservices/CoreService.svc/streamDownload_basicHttp_2010"
                binding="basicHttpBinding" bindingConfiguration="streamDownload_basicHttp_2010"
                contract="CoreService.IStreamDownload2010" name="streamDownload_basicHttp_2010" />
            <endpoint address="http://[ur]/webservices/CoreService.svc/streamUpload_basicHttp_2010"
                binding="basicHttpBinding" bindingConfiguration="streamUpload_basicHttp_2010"
                contract="CoreService.IStreamUpload2010" name="streamUpload_basicHttp_2010" />
            <endpoint address="http://[ur]/webservices/CoreService.svc/wsHttp_2010"
                binding="wsHttpBinding" bindingConfiguration="wsHttp_2010"
                contract="CoreService.ISessionAwareCoreService2010" name="wsHttp_2010">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
        </client>
于 2012-08-29T15:41:43.383 回答