【问题标题】:Extend MVC Api Controller Name扩展 MVC Api 控制器名称
【发布时间】:2015-03-03 04:37:16
【问题描述】:

现在我有两个控制器,一个用于 MVC,另一个用于 API。

// API
public class UsersController : ApiController
{
    // GET: api/Users <- works great
    public IQueryable<User> GetUsers() {}

    // **Not sure if this one is correct!**
    public IHttpActionResult GetUsersChart([FromURI]int id)
    {
        return Ok(repo.GetUsersChart(id));
    }
}

我想了解如何在 C# 代码中使用 HttpWebRequest 调用我的图表生成 api?

类似这样的:

HttpWebRequest createChartRequest =
WebRequest.Create(String.Format("{0}/api/Users/Chart/?id={1}", ServerUrl, 1));

会给我 HTTP 500 错误。

更新:

这里是路由配置:

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }

【问题讨论】:

  • 根据要求更新。
  • 只是一个健全的检查 - 你的变量 ServerUrl 没有恰好有一个斜杠 ('/') 对吗?
  • 不,一切都很好,我尝试了其他 GetUsers API,它工作正常。
  • 尝试{0}/api/Users/UsersChart/{1}作为您的格式字符串。
  • 你可能需要用 [HttpGet] 装饰你的 GetUsersChart() 方法

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


【解决方案1】:

响应代码 500 表示您的 API 操作中有一些错误。它与您的路线或您的请求方式无关。如果这是在开发中,请检查浏览器的开发人员工具中的响应,您应该能够在那里看到对实际服务器错误的描述。如果这是在生产中,您将需要以某种方式记录错误,例如使用 ELMAH,以便查看导致问题的原因。

【讨论】:

    猜你喜欢
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多