我有一个生产环境和一个测试环境。客户设置了不同的 URLhttp://intranet.company.com
和的测试环境http://intranettest.company.com
,这很有意义。测试数据库中的内容与生产数据库中的内容相同,我们在其中存储了网页上使用的链接。我无权访问数据库,需要将链接从生产环境更改为测试环境
http://intranet.company.com
应该解析为http://intranettest.company.com
可能有其他结尾,例如/sites/marketing
但没有文件名 ( default.aspx
)。该链接还可以指定一个端口(在我的开发环境中,这对于整个问题并不重要。开发链接http://devenv:1337/sites/marketing
可能会解释我奇怪的代码。
我做了一个片段,但感觉不对,以后我可以看到几个问题 - 使用它。有没有比以下更好的方法来编辑我的 URL?
string SiteCollectionURL = SPContext.Current.Web.Site.Url.ToString();
char[] delimiterChar = {'/', '.'};
string[] splitSiteCollectionURL = SiteCollectionURL.Split(delimiterChar);
string[] splitDepartmentLinkURL = departmentLink.Split(delimiterChar);
string fixedUrl = departmentLink;
if (splitSiteCollectionURL[2].Contains("test"))
{
fixedUrl = "";
for (int i = 0; i < splitDepartmentLinkURL.Length; i++)
{
if (i == 0)
{
fixedUrl += splitDepartmentLinkURL[i] + "//";
}
else if (i == 2)
{
if (splitDepartmentLinkURL[i].Contains(":"))
{
string[] splitUrlColon = splitDepartmentLinkURL[2].Split(':');
fixedUrl += splitUrlColon[0] + "test:" + splitUrlColon[1] + "/";
}
else
{
fixedUrl += splitDepartmentLinkURL[i] + "test" + ".";
}
}
else if (i > 2 && i < 4)
{
fixedUrl += splitDepartmentLinkURL[i] + ".";
}
else if (i >= 4 && i != splitDepartmentLinkURL.Length - 1)
{
fixedUrl += splitDepartmentLinkURL[i] + "/";
}
else
{
fixedUrl += splitDepartmentLinkURL[i];
}
}
departmentLink = fixedUrl;
}