当前位置: 首页 > 知识库问答 >
问题:

.NET Core绝对链接指向本地主机

屠兴旺
2023-03-14

我在Ubuntu 16.04上,Kestrel服务器在虚拟机上运行<整个流量使用nginx作为反向代理重定向到那里。

我的WebHost看起来像这样:

var host = new WebHostBuilder()
            .UseKestrel()
            .UseUrls("http://*:5000")
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

        host.Run();

当我尝试使用此方法获取操作的完整url时:

Url.Action("Index", "User", null, HttpContext.Request.Scheme);

它返回的是本地主机的地址,而不是域。

因此,不是:

hxxp://domain.com/user

我正在

hxxp://localhost:5000/user

它与应用程序或更确切地说与nginx设置有关吗?

共有1个答案

程举
2023-03-14

这种设置的问题是,原始域名永远不会到达Kestrel服务器,因此ASP。NET MVC不知道。相反,当nginx作为反向代理向localhost:5000发出请求时,这就是为什么当您试图从应用程序生成绝对url时,它将使用此url而不是来自客户端的原始url。

一种可能的方法是配置nginx以将原始url作为一些自定义标头发送,但您需要使用自定义url助手来读取此助手并生成正确的url。出于这个原因,我建议您在ASP. NET MVC应用程序中仅使用相对url:

Url.Action("Index", "User")
 类似资料:
  • 我刚刚在我的个人计算机上安装了DBeaver,并试图创建一个PostgreSQL数据库。 我在连接到数据库窗口中输入了以下内容: 主机:本地主机 端口:5432 数据库:Postgres 用户:Postgres 这些值都是预先填充的默认值,所以我离开了它们,点击了测试连接...按钮。 当我单击测试按钮时,一个错误窗口打开,说:“到本地主机的连接:5432被拒绝。请检查主机名和端口是否正确,以及邮局

  • 我已经设置了Flurl在我的Xamarin PCL中运行,并且我正在调用我在MVC应用程序中运行的Web Api。 似乎 Flurl 可以毫无问题地击中我部署的 API,但由于某种原因我无法在本地测试更改。 我现在做的是: 我也尝试过一个简单的GetAsync(),但再次失败。 任何帮助都将不胜感激。 编辑: 为了了解更多信息,该项目是Ionic移动应用程序的重新开发。我已经在本地运行了ionic

  • 问题内容: 我在使用Java rmi时遇到问题: 当我尝试运行服务器时,出现了connectException(请参见下文)。 执行rebind方法时发生异常: 当改用rmi:// localhost:2020 / RemoteDataPointHandler时,它也不起作用。另外,使用默认端口不起作用。我也尝试使用127.0.0.1 ip地址,但效果相同。 我的运行时参数: 问题答案: 当我更换

  • 我有一些短信是这样的: Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eusmod tempor incidunt ut labore et dolore magna aliqua.iTunes.apples.ru.com/app/forge-of-empires/id711455226 ipsum dolor sit

  • 问题内容: 我正在尝试学习RMI编码,当我运行RMI的服务器端时,连接被拒绝。这是我服务器的主要方法 我相信实现代码无关紧要,因为它只是运行代码的已实现接口。我得到的例外是这个 我究竟做错了什么?客户端和服务器端都将在我的笔记本电脑上运行,因为这只是一个练习。我是否缺少代码或代码有问题?除了给我答案外,请解释为什么会这样,因为我不仅想让它起作用,而是在尝试学习。 **编辑我发现了为什么我的代码无法

  • 我试图在PHP中对本地主机执行一个cURL请求,但出现以下错误: CURL错误(7):连接到8000localhost端口失败:连接被拒绝 我试图用谷歌搜索这条信息,也在StackOverflow上找到了类似的问题,但似乎没有任何效果。 卷曲php: test.php: 如果删除“CURLOPT_IPRESOLVE”值,请求将永远不会解析。我还尝试将“CURLOPT_SSL_VERIFYPEER”