【问题标题】:JSON file not working once published to azure but ok on localJSON文件一旦发布到天蓝色就不能工作,但在本地可以
【发布时间】:2016-04-02 17:01:10
【问题描述】:

经过多次谷歌搜索、跟踪和错误以及挫折,这个让我难住了。

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

        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);
        }

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

[{"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"}]

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

这是我迄今为止尝试过的:

  1. 将此添加到 web.config:

    <configuration>
    <system.webServer>
        <staticContent>
            <mimeMap fileExtension=".json" mimeType="application/json" />
     </staticContent>
    </system.webServer>
    

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

  3. 对 web.config 文件进行大量调整

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

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

【问题讨论】:

  • 您的 mvc 应用程序有其他操作吗?它是否返回响应?
  • 至少在 Azure Web 应用程序上(我不知道 VM 上的 IIS),您不必担心在 Web 配置中设置 json mime 类型。您能否在事件日志中看到异常,或者您是否尝试关闭自定义错误以显示异常?也许只是在控制器中手动构建一个假事件,以将 db 排除在测试等式之外。
  • 500 是内部服务器错误。您是否尝试过对您的操作进行异常处理。如果出现异常,您可以在 json 中返回消息以进行调试。或者您可以在 azure 站点上打开错误日志记录
  • 只是 500 Server 的信息不会有多大帮助,尝试在 system.webserver 中设置 customerrors mode=Off 看看究竟是什么导致了错误
  • @dotnetstep 是的,所有其他操作都可以正常工作。

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


【解决方案1】:

找到了问题以及如何解决。与 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 上运行,一切正常。在上面的示例中,我不必更改任何编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-08
    • 2018-07-04
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 2012-08-16
    相关资源
    最近更新 更多