创建在本地主机和实时站点上都有效的绝对url

本文关键字:有效 url 站点 主机 实时 创建 | 更新日期: 2023-09-27 18:07:52

我想用一个URL填充一个Literal控件,它将在我的本地机器和现场网站上工作。

现在,我有:

string TheHost = HttpContext.Current.Request.Url.Host;
string ThePath = HttpContext.Current.Request.Url.AbsolutePath;
string TheProtocol = HttpContext.Current.Request.Url.Scheme;
string TheURL = "<a href='"" + TheProtocol + "://" + TheHost + "/ThePageName'">SomeText</a>"

我在浏览器中手动输入的URL看起来像这样:

http://localhost:12345/ThePageName

但是当我运行上面的代码时,它显示为

localhost/ThePageName

我需要做什么修改才能在本地机器上输出

http://localhost:12345/ThePageName

在live站点我得到

http://www.example.com/ThePageName

创建在本地主机和实时站点上都有效的绝对url

使用您已经通过Request属性获得Uri的事实-您不需要手动完成所有操作:

Uri pageUri = new Uri(HttpContext.Current.Request.Url, "/ThePageName");
然后使用该

构建标记-但理想情况下而不是仅使用字符串连接。我们不知道你用什么来构建响应,说最好的方法,但是如果你能使用知道如何以及何时使用URI转义等的类型,那将会很有帮助。

(我也建议摆脱你的The前缀在每个变量,但这是一个有点不同的事情…)

使用UriBuilder修改url。假设您只需要更改路径并保持所有其他部分相同:

var builder = new UriBuilder(HttpContext.Current.Request.Url);
builder.Path = "MyOtherPage";
return builder.Uri;

我认为您不需要在站点中为任何url添加主机名。

让你所有的url都相对于根目录:

string TheURL = "<a href='"/ThePageName'">SomeText</a>"

string TheURL = "<a href='"/Products/12345'">SomeText</a>"

无论主机名如何,都可以正常工作。

或Uri pageUri = new Uri(HttpContext.Current.Request. html)。Url,"ThePageName");没有anti-slash

在web中使用不同的键/值。Config和web.release. Config文件,当你需要使用它时,从web上读取它们。配置文件。

下面是web.config的示例:
    <add key="Url" value="http://localhost:58980/" />
下面是示例web.release.config:
    <add key="Url" value="http://example.com/" xdt:Transform="Replace" xdt:Locator="Match(key)"/>

这可能有效。