【问题标题】:Need c# code to get domain name [duplicate]需要c#代码来获取域名[重复]
【发布时间】:2014-10-17 04:20:42
【问题描述】:

需要c#代码获取域名示例(“url:https://stackoverflow.com/questions/ask”)。我需要输出为 ("https://stackoverflow.com/")

【问题讨论】:

  • 您是在控制器中还是在单独的类中使用它?您需要向我们展示您尝试过的代码
  • 请回答 cmets 并选择被接受的答案。如果两者都不起作用,您可以对其中任何一个发表评论。
  • 好的...我将放弃我的积分并投票结束 - 我就是一个好人

标签: c# asp.net-mvc


【解决方案1】:

下次请尝试用 Google 搜索您的问题,看看是否已经有人提出并回答了。试试

  var domain =   HttpContext.Current.Request.Url.Host;

每厘米...

  var domain = HttpContextBase.Current.Url.Host;

这可以模拟单元测试 - 这意味着您可以将其设置为测试代码会做什么。

【讨论】:

  • 我不会选择这个作为最佳答案,具体取决于架构。如果需要单元测试和/或使用断开连接的分层架构,它应该基于HttpContextBase。这可以通过this.HttpContext 在控制器中实现。 IoC 容器可以使用new HttpContextWrapper(Http.Context.Current) 返回兼容的HttpContextBase 对象。
  • @user3789406,最后的斜杠不需要作为 url 的一部分。如果你想要它,请在末尾连接斜杠。
  • @ps2goat - 有时你必须弄清楚有人在问如何获得域......然后你可以假设他们是新的和刚刚学习的并且不需要完全可测试的代码,在这个舞台可读最好,简单最好。
  • 确实如此。我只记得当团队没有为未来做计划并且每个引用HttpContext.Current 的操作都破坏了单元测试时,这会导致很多问题。
  • @ps2goat - 确实也添加了您的评论 - 你们实际上是在测试代码吗?我不知道人们在现实生活中会这样做:p
【解决方案2】:

您可以查看 URI 类,它将 URI 解析为其组成部分。

例如:

var uri = new Uri("http://stackoverflow.com/questions/ask");
Debug.WriteLine(uri.Scheme); // "http"
Debug.WriteLine(uri.Host);   // "stackoverflow.com"

这样你就可以得到你想要的:

Debug.WriteLine(uri.Scheme + "://" + uri.Host + "/");

【讨论】:

  • 我们中的一个人误解了这个问题,我认为 OP 是指网站的特定 URL
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 2020-01-07
  • 2013-05-04
  • 2018-06-22
相关资源
最近更新 更多