TDSE.GetObject无法解析其中包含点的WebDAV URL

Chr*_*gan 10 tridion tridion2009

使用以下功能的任何人都遇到异

tdse.GetObject(tmpFolderWebDavURL, EnumOpenMode.OpenModeView, null,
                                          XMLReadFilter.XMLReadAll) as Folder;
Run Code Online (Sandbox Code Playgroud)

似乎webdav的最后一段包含一个点,然后方法抛出和异常.

例如

tmpFolderWebDavURL = "/webdav/test_publication/2.2 folder name"- 抛出异常失败

tmpFolderWebDavURL = "/webdav/test_publication/22 folder name"- 工作

tmpFolderWebDavURL = "/webdav/test_publication/2.2 folder name/sub_folder"- 工作

例外

<?xml version="1.0"?>
<tcm:Error xmlns:tcm="http://www.tridion.com/ContentManager/5.0" ErrorCode="80040200" Category="4" Source="Kernel" Severity="2">
    <tcm:Line ErrorCode="80040200" Cause="false" MessageID="15301">
        <![CDATA[Unable to get TOM object for URI: /webdav/TPMG Medical Library Content/Building Blocks/Content Live/2.2 People Lists]]>
        <tcm:Token>/webdav/TPMG Medical Library Content/Building Blocks/Content Live/2.2 People Lists</tcm:Token>
    </tcm:Line>
    <tcm:Line ErrorCode="80040200" Cause="true" MessageID="15748">
        <![CDATA[Unable to map all paths to URIs.]]>
    </tcm:Line>
    <tcm:Details>
        <tcm:CallStack>
            <tcm:Location>SystemDAL.GetURIsFromPaths</tcm:Location>
            <tcm:Location>SystemDAL.GetURIsFromPaths</tcm:Location>
            <tcm:Location>URLConversion.ConvertURLToURI</tcm:Location>
            <tcm:Location>SystemBLST.IBLSystemST_ConvertURLToURI</tcm:Location>
            <tcm:Location>TDSE.GetObject</tcm:Location>
        </tcm:CallStack>
    </tcm:Details>
</tcm:Error>
Run Code Online (Sandbox Code Playgroud)

Nun*_*res 8

就像空格一样,必须在webdav网址中转义点.

因此空格变为"%20",点变为"%2E".试着做tmpFolderWebDavURL.Replace(".", "%2E").

  • 我相信斜线前的点是正确解释的.那些没有斜杠的人被认为是文件扩展名的开头.如果它实际上是一个有效的文件扩展名指示器,例如对于多媒体组件或模式等,那么在更换点时要小心. (4认同)