実稼働環境とテスト環境があります。http://intranet.company.com
お客様は、とのようなさまざまなURLを使用してテスト環境を設定しましたhttp://intranettest.company.com
。これは、完全に理にかなっています。テストデータベースのコンテンツは、Webページで使用されるリンクを格納する本番データベースのコンテンツと同じです。データベースにアクセスできないため、リンクを本番環境からテスト環境に変更する必要があります
http://intranet.company.com
次のように解析する必要がありますhttp://intranettest.company.com
/sites/marketing
ファイル名()がないなど、追加の末尾が存在する可能性がありますdefault.aspx
。リンクにポートを指定することもできます(私の開発環境では、これは質問全体にとってそれほど重要ではありません。開発リンクはhttp://devenv:1337/sites/marketing
、私の奇妙なコードを説明する可能性があります。
私はスニペットを作成しましたが、それは正しく感じられず、後でいくつかの問題を見ることができます-それを使用します。次のURLよりも良い方法で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;
}