C# 使用LinkManager和languageEmbedding链接到主页;“始终”;

C# 使用LinkManager和languageEmbedding链接到主页;“始终”;,c#,sitecore,sitecore7,C#,Sitecore,Sitecore7,我正在Sitecore 7.5中构建一个多语言网站,我希望始终在URL开头显示该语言,例如mysite.com/en/article1.aspx 为了实现这一点,我根据博客用languageEmbedding=“always”修补了LinkManager配置。现在,当通过Sitecore.Context.SetLanguage()更改语言时,URL会正确地更改为相应的语言代码,如下所示。。。到目前为止还不错 当我尝试链接到home元素时,问题就出现了,例如通过重定向: var homeItem

我正在Sitecore 7.5中构建一个多语言网站,我希望始终在URL开头显示该语言,例如
mysite.com/en/article1.aspx

为了实现这一点,我根据博客用
languageEmbedding=“always”
修补了
LinkManager
配置。现在,当通过
Sitecore.Context.SetLanguage()
更改语言时,URL会正确地更改为相应的语言代码,如下所示。。。到目前为止还不错

当我尝试链接到home元素时,问题就出现了,例如通过重定向:

var homeItem = Sitecore.Context.Database.GetItem(<GUID to home>);
var url = LinkManager.GetItemUrl(homeItem);
Redirect(url);
var homeItem=Sitecore.Context.Database.GetItem();
var url=LinkManager.GetItemUrl(homeItem);
重定向(url);
生成的URL是
mysite.com/en.aspx
,其中显示了位于网站根文件夹中名为
Default.aspx
的页面。当然,我希望它指向
mysite.com/en/
,它对应于给定语言中的主项,如果手动输入,则可以工作

在我看来,
LinkManager
在这里有一个bug,因此在将语言嵌入URL时,它无法正确解析主项。还是只有我犯了错误

有人知道这个问题的解决方法吗?如何让
LinkManager
添加尾部斜杠

更新 以下是我的内容树的屏幕截图:


关于您获得的default.aspx。这可能是一个MVC问题,您可以通过在应用程序_Start()的global.asax中添加一行来修复它 a System.Web.Routing.RouteTable.Routes.RouteExistingFiles=true

protected void Application_Start()
{
  System.Web.Routing.RouteTable.Routes.RouteExistingFiles = true;
}
看到和


我不会按照您的意愿更改您的url,但这是默认行为。

如果您已按照该博客文章中的描述修补了url,您不应该在链接上获得.aspx扩展名。我觉得你的补丁坏了。如果您查看最终的web.config文件,是否可以看到修补后的值?能否提供有关内容结构的详细信息?是否尝试将addAspxExtension=“false”?@AhmedOkour我已尝试将addAspxExtension设置为true和false。结果分别是mysite.com/en.aspx和mysite.com/en,但没有一个显示主项。@timothyclifford补丁确实有效(我使用的设置与博客中的设置略有不同)。你所说的我的内容的结构是什么意思?谢谢!我不在乎URL是否以“/en”或“/en/”结尾,重要的是显示正确的项目。您也可以将此链接添加到您的答案中: