加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 来自Request.Url.ToString()的字符串在操作/比较第一个字

发布时间:2020-12-15 04:02:05 所属栏目:百科 来源:网络整理
导读:我知道有更简单的方法来做到这一点,相信我,我试过了.我当然可以接受任何建议=).你不需要阅读整个代码,只是说明问题所在的部分.此外,我正在debbugging perl风格,所以你们可以看到.哦,我是否提到在我的开发环境中,一切都按照预期的方式工作? 以下是代码: str
我知道有更简单的方法来做到这一点,相信我,我试过了.我当然可以接受任何建议=).你不需要阅读整个代码,只是说明问题所在的部分.此外,我正在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的所有组合都无效.
>我已经尝试过Request.Host.Url,它只是给了我“intranetqa”.
>我使用了Request.Url.AbsoluteUri,这就是为什么我有替换
80行.
>使用.tochararray功能让我回到了INTRANETQA THING
> myURL = myURL.Substring(6)返回intranetqa的东西.
> string.Contains(“sar.smg.com.ar”)返回false.

我相信诀窍在这里:

> Uri uriAddress1 = Request.Url;和“这些部分是< br>” “第1部分:”uriAddress1.Segments [0]“< br>第2部分:”uriAddress1.Segments [1];给出Part1:“/”和第2部分:“Default.aspx”.尝试访问第3部分(索引2)提供了一个例外.
request.url没有第一部分,但是当我调用ToString()方法时,它确实有一个“假的”第一部分

解决方法

在浏览器和服务器之间是一个反向代理和一个输出重写器.这些可能是相同的组件或单独的组件.

您的服务器实际看到的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的请求添加额外的头.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读