我的“管理网站”面板中有以下设置
一般网址设置为alloy.com
合金.no设置为没有文化
合金.se设置为sv文化
合金网是为文化而设
在我的代码中,我想为给定页面获取给定语言的友好外部 url。因此,对于搜索页面,我想获得所有语言的绝对友好 url。
我使用以下代码获取页面的友好 url(在Anders G. Nordby 博客上找到):
var urlResolver = ServiceLocator.Current.GetInstance<UrlResolver>();
var pageAddress = urlResolver.GetUrl(reference, language);
var builder = new UrlBuilder(pageAddress);
Global.UrlRewriteProvider.ConvertToExternal(builder, null, Encoding.UTF8);
var friendlyUrl = builder.Uri.IsAbsoluteUri
? builder.ToString()
: UriSupport.AbsoluteUrlBySettings(builder.ToString());
return friendlyUrl;
如果我将使用alloy.com网页并在我的自定义代码中生成友好的 url,这很简单。
- 否-合金.no/ søk
- se-alloy.se/sök _ _
- zh-alloy.com/search _ _
但是当我使用alloy.no进入编辑模式时,我会尝试生成地址,因为没有我得到合金。com /søk当它应该是合金时。没有/søk。
我发现如果我使用alloy.no进入编辑模式,代码:
urlResolver.GetUrl(reference, language)
仅返回/søk和代码
UriSupport.AbsoluteUrlBySettings(builder.ToString())
添加通用 URL (alloy.com) 而不是alloy.no。
如何改进此代码以在不同文化中为页面采用正确的主机名?