JSON文件一旦发布到azure就无法工作,但在本地就可以了

时间:2016-04-02 17:01:10

标签: c# json asp.net-mvc azure

经过大量的谷歌搜索,追踪,错误和挫折之后,这个让我感到难过。

我在Azure上发布了一个MVC应用程序。我有一个查询数据库的控制器,并返回Json文件以用作Fullcalendar中的事件,如下所示:

   Table "public.products"
 Column |  Type   | Modifiers
--------+---------+-----------
 id     | integer |

Table "public.promotion_rules"
 Column |  Type   | Modifiers
--------+---------+-----------
 id     | integer |

 Table "public.products_promotion_rules"
      Column       |  Type   | Modifiers
-------------------+---------+-----------
 product_id        | integer |
 promotion_rule_id | integer |

非常简单......在我的本地,这会生成一个非常好的文件,如下所示:

        public JsonResult Events()
        {

            var ci = from c in db.CalendarItems
                     select c;

            var rows = new List<dynamic>();

            foreach(var item in ci)
            {
                if (item.ClassTime.HasValue)
                    rows.Add(new { ID = item.Id, title = item.title, start = item.start.ToString("yyyy-MM-dd") + "T" + item.start.TimeOfDay.ToString(@"hh\:mm\:ss"), end = item.end.ToString("yyyy-MM-dd") + "T" + item.end.TimeOfDay.ToString(@"hh\:mm\:ss")});
            }

            return Json(rows, JsonRequestBehavior.AllowGet);
        }

但是,在已发布的azure网站上,我收到错误代码500.

这是我到目前为止所尝试的内容:

  1. 将此添加到web.config:

    [{"ID":1,"title":"Event1","start":"2015-08-04T19:00:00","end":"2015-08-04T08:00:00"},{"ID":2,"title":"Event2","start":"2015-08-06T19:00:00","end":"2015-08-06T08:00:00"},{"ID":3,"title":"Event3","start":"2015-08-14T19:00:00","end":"2015-08-14T08:00:00"}]
    

  2. 在我的web.config中将httpErrors existingResponse =“PassThrough”添加到system.webServier。

  3. 很多关于web.config文件的推文

  4. 删除整个应用程序并在azure中重新创建

  5. 我设置了customersrors mode = off,我收到了这个错误:“已经有一个与此命令关联的打开的DataReader必须先关闭。”为了确保我仔细检查了我的连接字符串并且MARS处于活动状态。也许循环是问题?

1 个答案:

答案 0 :(得分:0)

发现问题以及如何解决。使用azure支持台,我发现azure web 应用程序架构并不支持json事件到fullcalendar。我通过下载Azure SDK并按照以下步骤将此应用程序转换为应用程序:

https://azure.microsoft.com/en-us/documentation/articles/vs-azure-tools-migrate-publish-web-app-to-cloud-service/

现在应用程序正在VM上运行,一切正常。我没有必要改变上面例子中的任何编码。