c# – 来自Request.Url.ToString()的字符串在操作/比较第一个字
我知道有更简单的方法来做到这一点,相信我,我试过了.我当然可以接受任何建议=).你不需要阅读整个代码,只是说明问题所在的部分.此外,我正在debbugging 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; } 相信与否,网页中产生的输出是: Copying it to myURL,it's now: "http://sar.smg.com.ar/Default.aspx?TabID=912" Trimming and ToLower myURL. The new url is "http://sar.smg.com.ar/default.aspx?tabid=912" Replacing the ":80". The new url is"http://sar.smg.com.ar/default.aspx?tabid=912" Replacing the "http://". The new url is"intranetqa/default.aspx?tabid=912" Removing everything after the "/". The new url is "intranetqa" GetPortalAlias Returning "intranetqa" 所以…由于某种原因,只要它到达替换部分,它神秘地突变,以“intranetqa”而不是“sar.smg.com.ar”开头. “intranetqa”是我们的默认主机名.更改或使用HTTP的任何字符://以任何方式转播STRING. 我做一个string.copy,因为我知道如果两个字符串相等,编译器将它们存储在同一个地方,所以我想防止错误.将这些线条移开并使用Request.Url.ToString()tomyURL直接不执行任何操作.他们只是一个考验,看看是否有效. 以下是我尝试过的内容的列表: > string / String的所有组合都无效. 我相信诀窍在这里: > Uri uriAddress1 = Request.Url;和“这些部分是< br>” “第1部分:”uriAddress1.Segments [0]“< br>第2部分:”uriAddress1.Segments [1];给出Part1:“/”和第2部分:“Default.aspx”.尝试访问第3部分(索引2)提供了一个例外. 解决方法
在浏览器和服务器之间是一个反向代理和一个输出重写器.这些可能是相同的组件或单独的组件.
您的服务器实际看到的URL始终是http://intranetqa/default.aspx?tabid = 912(在反向代理/ URL重写器拦截了请求之后)的形式. 您的服务器产生的输出实际上就像: Copying it to myURL,it's now: "http://intranetqa/Default.aspx?TabID=912" Trimming and ToLower myURL. The new url is "http://intranetqa/default.aspx?tabid=912" Replacing the ":80". The new url is"http://intranetqa/default.aspx?tabid=912" Replacing the "http://". The new url is"intranetqa/default.aspx?tabid=912" Removing everything after the "/". The new url is "intranetqa" GetPortalAlias Returning "intranetqa" 输出重写器正在检查服务器的输出,并使用http://sar.smg.com.ar替换http:// intranetqa.一旦你剥离了这些字符串前面的http://,它不再是匹配,所以替换不再发生. 如果您想知道原始请求的URL /主机是什么,希望反向代理可以或可以配置为向原始URL的请求添加额外的头. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |