我使用asp.net mvc4和我在“controller1”这个动作:
[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”时,动作正常,但是不要将uri设置为“controller2 / action2”或“/ controller2 / action2”或“〜/ controller2 / action2”.
如何在没有硬编码uri的情况下写这个动作?
谢谢.
解决方法
使用:
string uri = Url.Action("Action2","Controller2",new {},Request.Url.Scheme);
更新:
由于您使用API控制器并需要为常规控制器生成Url,所以您必须使用:
string uri = this.Url.Link("Default",new { controller = "Controller2",action = "Action2" });
其中Default是在注册路由集合中定义的路由的名称,或者如果您已经为此操作创建了特定路由,请使用其名称和新{}作为第二参数.
对于MVC版本4,请在〜/ App_Start / RoutesConfig.cs检查您注册的路由.对于MVC版本3,请在您的Global.asax中检查您的RegisterRoutes方法.
原文地址:https://www.jb51.cc/aspnet/246061.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。