gpt4 book ai didi

asp.net-mvc - 从 Api Controller 中生成 Action 的绝对 url

转载 作者:行者123 更新时间:2023-12-03 15:22:15 24 4
gpt4 key购买 nike

我正在使用 asp.net mvc4,我在“controller1”中有这个 Action :

    [HttpGet]
public async Task<string> Action1()
{
try
{
HttpClient cl = new HttpClient();
string uri = "controller2/action2";
HttpResponseMessage response = await cl.GetAsync(uri);
response.EnsureSuccessStatusCode();
return response.ToString();
}
catch
{
return null;
}
}

当我将 uri 设置为 "http://localhost:1733/controller2/action2"该 Action 工作正常,但永远不会将 uri 设置为“controller2/action2”或“/controller2/action2”或“~/controller2/action2”。

如何在不硬编码 uri 的情况下编写此操作?

谢谢你。

最佳答案

用:

string uri = Url.Action("Action2", "Controller2", new {}, Request.Url.Scheme);

更新:

由于您使用的是 API Controller 并且需要为常规 Controller 生成 Url,因此您必须使用:
string uri = this.Url.Link("Default", new { controller = "Controller2", action = "Action2" });

哪里 Defaultroute的名字在您注册的路由集合中定义,或者如果您已经为此操作创建了特定的路由,请使用它的名称和 new{}作为第二个参数。

对于 MVC 版本 4,请在 ~/App_Start/RoutesConfig.cs 检查您注册的路由。 .对于 MVC 版本 3,请检查您的 RegisterRoutes您的 Global.asax 中的方法.

关于asp.net-mvc - 从 Api Controller 中生成 Action 的绝对 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17740894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com