LinkManager.GetItemUrl返回西班牙语项目的奇怪url(C#)

LinkManager.GetItemUrl返回西班牙语项目的奇怪url(C#),c#,url,sitecore,C#,Url,Sitecore,例如,我的网站有一个西班牙文项目文件夹,出于某种原因,LinkManager.GetItemUrl()会为这些项目返回一个奇怪的URL :\\mysite.com\es\content\articles\2016\articlename 我不确定这是否是因为文件夹结构——这些项目在/Home/es/content/articles/2016下,而英文版本在/Home/content/articles/2016下,LinkManager.GetItemUrl()可以很好地处理英文项目 或者如果它与

例如,我的网站有一个西班牙文项目文件夹,出于某种原因,LinkManager.GetItemUrl()会为这些项目返回一个奇怪的URL

:\\mysite.com\es\content\articles\2016\articlename

我不确定这是否是因为文件夹结构——这些项目在
/Home/es/content/articles/2016
下,而英文版本在
/Home/content/articles/2016
下,LinkManager.GetItemUrl()可以很好地处理英文项目

或者如果它与版本控制有关。我实现了一个修复程序,从url字符串中删除了
:\\mysite.com
,但我想知道LinkManager.GetItemUrl返回这个奇怪url的原因

  • 打开/sitecore/admin/showconfig.aspx页面查找链接管理器部分
  • 如果您有默认的自定义提供程序(不是Sitecore.Providers.LinkProvider),请查看自定义提供程序代码
  • 若它是默认的sitecore提供程序,那个么它将以下一种方式工作:查找适合此url的站点(从web.config中的“站点”部分),按格式{site Schema}://{Domain}/{Language code}/{Path}构建url
  • Sitecore似乎无法为此项/语言组合解析正确的站点。这意味着您在Sitecore.config中可能有错误的站点配置

    其他简单的解决方案:

  • 查找配置LinkProvider的文件
  • 将“alwaysIncludeServerUrl”属性设置为“false”。它将更改URL构建的逻辑,并且不会包含要链接的{Site Schema}://{Domain}/部分

  • 对于英文版本,从LinkManager.GetItemUrl获得的Url是什么?AlwaysIncludeServerUrl=false修复了它!