0

実稼働環境とテスト環境があります。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;
}
4

2 に答える 2

2

あなたが予見する問題は何ですか?あなたがあなたの質問でそれらを説明するならば、それは助けになるでしょう。しかし、UriBuilderクラスを見てください:

var uris = new List<String>
{
    @"http://intranet.company.com",
    @"http://myhost.company.com:1337",
    @"http://intranet.company.com/deep/path?wat",
    @"http://myhost.company.com:1337/some/other?path",
};


foreach (var u in uris)
{
    var ub = new UriBuilder(u);
    ub.Host = "intranettest.company.com";
    ub.Port = 80;

    Console.WriteLine(ub.Uri);
}

私のために働く:

http://intranettest.company.com/
http://intranettest.company.com/
http://intranettest.company.com/deep/path?wat
http://intranettest.company.com/some/other?path
于 2012-10-16T10:05:53.510 に答える
0

たぶん私は完全にはフォローしていませんが、この議論を始めるために:
なぜしないのですか

var newUrl = oldUrl.Replace(@"http://intranet.company.com", @"http://intranettest.company.com");
于 2012-10-16T10:00:16.357 に答える