创建在本地主机和实时站点上都有效的绝对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
使用您已经通过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)"/>
这可能有效。