【问题标题】:asp.net web api json not returning when on serverasp.net web api json在服务器上不返回
【发布时间】:2015-02-23 06:01:38
【问题描述】:

我为我的移动应用构建了一个网络 API。我在浏览器的 localhost 上对其进行测试,它按预期返回 json,但是每当我在 azure 上托管它并点击相同的 URL 时,我都没有收到任何数据,但是 chrome 中的谷歌网络(开发者控制台)说它已经检索到 408B 的数据,但是没有内容显示在 json 应该出现的位置?

我可能没有正确配置什么?

我已经进入 Global.ascx 文件并添加了以下代码行

 public static void Register(HttpConfiguration config)
    {
        config.EnableCors();
    }

并在 webapi 控制器类的顶部添加 EnableCors 属性并设置前缀路由器。

我错过了什么?

控制器代码参见下面的 sn-p。该数据库是从已经存在的数据库生成的 EF Code First。请注意。

 [EnableCors(origins: "*", headers: "*", methods: "*")]
    [RoutePrefix("api/numbers")]
    [AllowAnonymous]
    public class NumbersController : ApiController
    {
        private MegaMillions db = new MegaMillions();

        [HttpGet]
        public HttpResponseMessage Get()
        {
            return db.Numbers.Take(10).ToList();
        }

        // GET: api/Numbers
        public List<Number> GetNumbers()
        {
            return db.Numbers.ToList();
        }
}           

如果我能弄清楚如何让列表正常工作,其他 CRUD 操作也会效仿。

【问题讨论】:

    标签: asp.net json rest asp.net-web-api


    【解决方案1】:
    [EnableCors(origins: "*", headers: "*", methods: "*")]
    [RoutePrefix("api/values")]
    public class ValuesController : ApiController
    {
        List<Doctor> doctors = new List<Doctor>(){ new Doctor { Id = 1, FirstName = "Carl Finch", LastName = "Finch" }, new Doctor { Id = 2, FirstName = "Carl", LastName = "Finch" } };
        // GET api/values/5
        [Route("Get")]
        public string Get()
        {
            return "This is my controller response";
        }
    
        [Route("GetNumbers")]
        public List<Doctor> GetNumbers()
        {
            return doctors;
        }
    }
    

    所以在为 web api 中的每个方法添加路由之后,它工作得很好!

    所以请记住声明 RouterPrefix 不足以获取数据,Web api 中的每个方法都必须具有适当的 Router 属性。

    【讨论】:

    • 如果我弄错了请有人编辑这个,但我在天蓝色服务器上测试后能够接收数据。
    猜你喜欢
    • 1970-01-01
    • 2012-02-26
    • 2023-04-05
    • 1970-01-01
    • 2012-04-23
    • 2012-06-20
    相关资源
    最近更新 更多