【问题标题】:c# asp.net mvc HttpRequest.URL时间:2019-04-10 标签:c#asp.netmvcHttpRequest.URL
【发布时间】:2012-05-22 02:01:29
【问题描述】:

我有一个 ASP.net Web 应用程序,它具有不同的功能和数据,具体取决于它登录的 URL。

在已部署的环境中一切正常,因为我可以在 IIS 中绑定多个主机,然后 Web 应用程序可以查询 request.URL 以找出要使用的代码和数据。

例如。 http://foo.bar.com 将运行与 http://test.bar.com 不同的代码

问题出现在我的开发机器上的 VS2010 调试中。 我可以在配置中硬编码默认站点 url,但需要同时运行多个。 例如 site1.localhost、site2.localhost、site3.localhost ....

我尝试在 system32/drivers/etc 中编辑我的主机文件 例如

127.0.0.1  localhost site1.localhost site2.localhost

但如果我在代码中点击 site1.localhost,request.Url 始终是 localhost

无论如何我可以解决这个问题吗?

【问题讨论】:

  • 您是否尝试过多个主机文件行...
  • 您是否托管在 IIS 中?您是否将站点绑定到 site1.localhost 和 site2.localhost?
  • 不,这是在我的本地机器上运行,在 Visual Studio 中运行调试,我想我也可以尝试为同一目录托管 IIS 并构建站点并像这样设置 msdn.microsoft.com/en-us/library/a1zz9df4.aspx 进行测试,但我想在调试中运行
  • 您可以通过附加进程来调试在 IIS 上运行的站点 - 抱歉,调试 -> 附加进程 --> w3wp(www 工作进程)是您想要的 - 通常有一些关于哪个站点的描述每个进程都在服务
  • 希望有一个更简单的主机解决方案,重建,重新启动 IIS,然后将调试附加到 IIS 进程非常不友好

标签: c# asp.net-mvc windows


【解决方案1】:

如果您已将主机名映射到 system32/drivers/etc/hosts,请尝试此代码。这应该返回正确的路径

     string host = Request.Headers["Host"];
     string pathAndQuery = Request.Url.PathAndQuery;

     string fullPath = host + pathAndQuery;

【讨论】:

  • 太棒了,现在我为什么没有想到这一点。谢谢
【解决方案2】:

基于 mfras3r cmets。我可以通过

让它工作

在 IIS 中设置网站,将该网站指向我的 MVC 应用程序的目录。 将所有 url 的绑定添加到 IIS 中的网站。 将 url 作为条目添加到 /etc/hosts 中,指向 localhost。

构建应用程序。 (不要运行它,因为它会因为 IIS 而搞砸) 调试 -> 附加到 IIS 进程。

【讨论】:

    【解决方案3】:

    我认为vs2010中的调试服务器不是功能齐全的IIS。它不支持多个站点。因此,在您的情况下,最好使用“附加”或远程调试。这取决于您是否可以在开发机器上安装 IIS。

    【讨论】:

      猜你喜欢
      • 2016-04-19
      • 2022-01-16
      • 2018-07-04
      • 2019-06-02
      • 1970-01-01
      • 2013-05-26
      • 2015-02-10
      • 2013-06-03
      • 2018-09-10
      相关资源
      最近更新 更多