【问题标题】:ASP.Net get the domain name not the localhost?ASP.Net 获取的域名不是 localhost?
【发布时间】:2010-12-01 10:21:35
【问题描述】:

我正在尝试编写一种方法,该方法将向客户端发送一封电子邮件,其中包含一个下载链接,用户可以点击该链接直接下载。

实际上,我将它模拟为 Global 中持续运行的进程,不断向 ftp 服务器发送文件,如果发送出错,将向管理员发送链接,以便他可以直接下载文件.

我的问题是如何获取外部链接,例如我想要http://www.abc.com/temp/file.txt。我想要一个通用的解决方案,这样无论我更改服务器的域是什么,代码仍然有效?

谢谢

【问题讨论】:

  • 这个服务和服务器有什么关系?
  • 它是服务器的一部分吗?实际上,我将它模拟为 Global 中持续运行的服务,不断向 ftp 服务器发送文件,如果发送出错,将向管理员发送链接以直接下载文件。

标签: c# asp.net dns


【解决方案1】:

ASP.NET 在技术上并不“知道”入口域是什么。它只关心应用程序,它们大多与用户进入的权限正交。在请求线程的上下文中,它知道用户可能请求的域,但仅此而已。

您可以使用(除其他外)Control.ResolveUrl("~/path_to_file"); 来获取服务器相对路径 - 从那里,您需要一些配置驱动的方式来确定域应该是什么。

【讨论】:

  • 所以这意味着除了从配置文件中读取或从用户请求中获取之外,绝对没有其他方法?
  • @Kenny 或从 IIS 元数据库中读取配置的主机头域,然后以某种方式从中选择正确的域。配置对我来说听起来更容易:)
【解决方案2】:

我不确定我是否完全理解问题,但在 IIS 7 上,您可以使用 Microsoft.Web.Administration 程序集为某些站点定义域(IIS 绑定)

ServerManager sman = new ServerManager(); foreach(sman.Sites 中的站点 iisSite) { foreach(iisSite.Bindings 中的绑定绑定) { // bind.Host - 这里是站点域 } }

【讨论】:

    猜你喜欢
    • 2014-07-07
    • 2011-02-10
    • 2022-01-03
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    相关资源
    最近更新 更多