我知道有更简单的方法可以做到这一点,相信我,我已经尝试过了。我当然愿意接受任何建议 =)。您无需阅读整个代码,只需阅读说明问题所在的部分即可。另外,我正在调试 perl 风格,所以你们可以看到。哦,我有没有提到在我的开发环境中一切都按预期工作?
这是代码:
string GetPortalAlias()
{
String myURL2 = Request.Url.ToString();
URLLabel.Text = "Original Request.Url.ToString() returned: \"" + myURL2 + "\"";
string myURL = string.Copy(myURL2);
URLLabel.Text = "Copying it to myURL, it's now: \"" + myURL + "\"";
myURL = myURL.ToLower().Trim();
URLLabel.Text += "<br>Trimming and ToLower myURL.<br>The new url is \"" + myURL + "\"" + "<br>";
myURL = myURL.Replace(":80", "");
URLLabel.Text += "Replacing the \":80\".<br> The new url is\"" + myURL + "\"<br>";
//***HERE LIES THE PROBLEM***
myURL = myURL.Replace("http://", "");
URLLabel.Text += "Replacing the \"http://\".<br> The new url is\"" + myURL + "\"<br>";
//***PROBLEM ENDS***
myURL = myURL.Remove(myURL.IndexOf("/"));
URLLabel.Text += "Removing everything after the \"/\"." + "<br> The new url is \"" + myURL + "\"<br>";
URLLabel.Text += "<br>GetPortalAlias Returning \"" + myURL + "\"";
return myURL;
}
信不信由你,网页中产生的输出是这样的:
将其复制到 myURL,现在是:“http://sar.smg.com.ar/Default.aspx?TabID=912” 修剪和降低 myURL。 新网址是“http://sar.smg.com.ar/default.aspx?tabid=912” 替换“:80”。 新的网址是“http://sar.smg.com.ar/default.aspx?tabid=912” 替换“http://”。 新网址为“intranetqa/default.aspx?tabid=912” 删除“/”之后的所有内容。 新网址是“intranetqa” GetPortalAlias 返回“intranetqa”
所以......由于某种原因,每当它到达替换部分时,它就会神秘地变异为以“intranetqa”而不是“sar.smg.com.ar”开头。“intranetqa”是我们的默认主机名。以任何方式更改或删除 HTTP:// 的任何字符都会改变字符串。
我这样做是string.copy
因为我知道如果两个字符串相等,编译器会将它们存储在同一个地方,因此我想防止错误。拿走这些线并直接使用Request.Url.ToString()
tomyURL
根本没有任何作用。他们只是一个测试,看看这是否有效。
这是我尝试过的事情的清单:
string
/的所有组合String
,没有一个有效。- 我试过
Request.Host.Url
了,它只是给了我“intranetqa”。 - 我用过
Request.Url.AbsoluteUri
,这就是为什么我有 replace :80 行。 - 使用该
.tochararray
功能让我回到了 InTRANETQA 的东西 - myURL = myURL.Substring(6) 还给了 Intranetqa 的东西。
- string.Contains("sar.smg.com.ar") 返回错误。
我相信诀窍就在这里:
Uri uriAddress1 = Request.Url;
并"The parts are <br>" + "Part 1: " + uriAddress1.Segments[0] + "<br>Part 2: " + uriAddress1.Segments[1];
给出第 1 部分:“/”和第 2 部分:“Default.aspx”。尝试访问第 3 部分(索引 2)会出现异常。request.url 没有第一部分,但是当我调用 ToString() 方法时,它确实有一个“假”的第一部分