【问题标题】:looking for Another way to call WebAPI Controller寻找另一种调用 Web API Controller 的方法
【发布时间】:2018-06-25 22:58:15
【问题描述】:

有什么方法可以在调用 WebAPI 控制器时替换 http://localhost:12345

例如:为了调用 Controller,我们创建像 http://localhost:12345/api/Home?id=5 这样的 URL .. 我不想那样。

我希望我的代码为我创建 http://localhost:12345 作为字符串。

我环顾四周,得到了这个string baseURL = HttpContext.Current.Request.Url.Host;,但它只给了我一个字符串localhost

在此语句Uri uri = new Uri("http://localhost:12345/api/Home?id=5"); 中,我们将 URL 传递给调用控制器。就我而言,我希望我的这个http://localhost:12345 部分的 URL 应该是动态创建的。 任何人都可以建议其他方式吗?

谢谢

【问题讨论】:

  • 我不确定您所说的“我希望我的代码为我创建 localhost:12345 作为字符串”是什么意思。也许您可以发布一些示例代码或解释您要解决的问题
  • 您可以检索整个请求URL,然后解析主机,包括端口号(:12345)
  • @yildizm85 正确读取需求。
  • @DaniDev 有什么例子吗?

标签: c# asp.net asp.net-web-api asp.net-web-api2


【解决方案1】:

这完成了我的工作。

        var request = HttpContext.Current.Request;
        var builder = new UriBuilder(request.Url.Scheme, request.Url.Host, request.Url.Port);
        return builder.ToString();

【讨论】:

  • 不错的@Pro-n-apps !我相信您可以在没有示例的情况下弄清楚它;-)
  • 其实我很困惑,因为我们将它托管在服务器上后它会正常运行。例如:现在我有像 localhost:12345/api/FormData?id=5 这样的 URL 在将这个项目托管到服务器之后 URL 将是 abc.XYZ.com/api/FormData?id=5 我的困惑是即使在托管之后它是否能够以相同的方式处理请求在服务器上?
  • 得到的字符串是什么?
  • 在服务器上,我的意思是:-)。我问的原因是因为它在服务器上工作,默认端口可能是 80,所以我想知道 UriBuilder 如何处理它?它是否显示在浏览器中?除此之外,它的工作原理应该没有任何令人费解的地方。
  • 我还没有在服务器上检查它,这将由 TL 完成。这是唯一的方法还是有其他方法?
猜你喜欢
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 2019-01-06
  • 2020-01-07
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 2016-05-19
相关资源
最近更新 更多