Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未从WebAPI MVC填充JSON的FullCalendar.io事件_C#_Asp.net Mvc_Asp.net Web Api_Fullcalendar - Fatal编程技术网

C# 未从WebAPI MVC填充JSON的FullCalendar.io事件

C# 未从WebAPI MVC填充JSON的FullCalendar.io事件,c#,asp.net-mvc,asp.net-web-api,fullcalendar,C#,Asp.net Mvc,Asp.net Web Api,Fullcalendar,我知道有很多关于JSON的帖子没有填充FullCalendar.io事件,但是,我坐在这里,沮丧而不知所措。 在阅读了几个小时(实际上是下午的大部分时间)之后,按照我发现的建议,再加上一些尝试和测试,我相信我已经将我的问题缩小到了一些可能性 以下是详细情况: 我有一个使用MVC的WebAPI,目前作为测试服务器在本地运行(Visual Studio 2017中的IISExpress)。WebAPI从SQL server/存储过程(不是我的matchine本地)获取数据,并返回数据,我将其放入列表

我知道有很多关于JSON的帖子没有填充FullCalendar.io事件,但是,我坐在这里,沮丧而不知所措。 在阅读了几个小时(实际上是下午的大部分时间)之后,按照我发现的建议,再加上一些尝试和测试,我相信我已经将我的问题缩小到了一些可能性

以下是详细情况:

我有一个使用MVC的WebAPI,目前作为测试服务器在本地运行(Visual Studio 2017中的IISExpress)。WebAPI从SQL server/存储过程(不是我的matchine本地)获取数据,并返回数据,我将其放入列表中,并通过JSON.Net序列化程序序列化为JSON字符串。使用浏览器和邮递员,我能够验证返回的数据是有效的JSON字符串。当我将JSON字符串(从WebAPI返回)手动插入FullCalendar时,它工作正常,但当我要求FullCalendar从WebAPI检索数据时,它失败了

以下是WebAPI代码:

 public class CalData
    {
        public string title { get; set; }
        public DateTime start { get; set; }

    }

// GET api/values

    public string Get()
    {

        SqlConnection sqlConnection1 = new SqlConnection("My SQL Connect String");
        SqlCommand cmd = new SqlCommand();
        SqlDataReader reader;

        cmd.CommandText = "GetData";
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Connection = sqlConnection1;

        sqlConnection1.Open();

        reader = cmd.ExecuteReader();

        List<calData> CalInfo = new List<CalData>();
        while (reader.Read())
        {
            CalData item = new CalData()
            {
                title = (string)reader["title"],
                start = (DateTime)reader["start"]

            };
            CalInfo.Add(item);
        }

        reader.Close();

        sqlConnection1.Close();

        string output = JsonConvert.SerializeObject(CalInfo);

        return output;


    }
日历页是来自ASP.NET MVC的“视图”。下面是脚本标记之间的代码,其中包含硬编码的JSON,如前所述,它可以正常工作:

    $(document).ready(function () {

    $('#calendar').fullCalendar({})

});


$('#calendar').fullCalendar({
    events:
        [{ 
         "title": "Test1", 
         "start": "2018-04-12T00:00:00" 
         },
         {
           "title": "Test2",
           "start": "2018-04-13T00:00:00"
          }]

     });
下面是根据FullCalendar.io网站上的文档构建的代码:

$(document).ready(function () {

    $('#calendar').fullCalendar({})

});


 $('#calendar').fullCalendar({
    events: 'http://localhost:51730/api/values'

});
我已经通过在WebAPI上设置断点验证了FullCalendar正在请求数据(是的,我后来清除了断点,但它仍然不起作用!)我认为发生了以下两种情况之一:(1)API太慢,FullCalendar没有等待数据。(2) FullCalendar自己进行调用时存在格式问题

我对C#、JQuery和Visual Studio还不够熟悉,因此我不确定如何调试我的FullCalendar MVC视图,以确定FullCalendar调用是否正在等待数据,如上面选项1所怀疑的那样。同样,对于选项2,我不知道如何查看FullCalendar从我的WebAPI接收的JSON字符串以及如何处理它。因此,我几乎陷入僵局

我非常感谢这里的一些指导,我想相信这对我以外的其他人来说是一个问题,然而,我有一种感觉,这很简单,我忽略了。我也试图提供尽可能多的信息,但是如果我需要补充更多的信息,请提出要求,我很乐意分享任何希望解决这个问题的信息


提前谢谢

多亏了阿德森的一些指点,我终于找到了问题所在。问题是我在chrome中检查控制台时发现了一个跨源资源共享(CORS)错误。以下是错误的屏幕截图:

用于实现my FullCalendar的WebAPI和ASP.Net MVC都在同一台机器上,但是,由于它们都启动了IIS版本,因此端口号自然不同。默认情况下,WebAPI配置为仅允许相同的域/端口请求作为安全措施。我发现有两个链接帮助我解决了这个问题。我在这里分享它们,但请注意作者在第一个链接(视频)中使用*作为源代码,我认为在测试/开发以外的任何环境中使用它都是不明智的,因为它会向所有源代码打开WebAPI,并带来潜在的安全问题。第二个链接(虽然有点过时)更详细地解释了如何允许CORS以及每段代码的作用

链接1:

链接2:

我希望这能帮助其他人。我很高兴我没有发疯,我的代码是正确的,这只是一个权限问题


非常感谢Stephan和ADyson对答案的投入和指导

多亏了阿德森的一些指点,我终于找到了问题所在。问题是我在chrome中检查控制台时发现了一个跨源资源共享(CORS)错误。以下是错误的屏幕截图:

用于实现my FullCalendar的WebAPI和ASP.Net MVC都在同一台机器上,但是,由于它们都启动了IIS版本,因此端口号自然不同。默认情况下,WebAPI配置为仅允许相同的域/端口请求作为安全措施。我发现有两个链接帮助我解决了这个问题。我在这里分享它们,但请注意作者在第一个链接(视频)中使用*作为源代码,我认为在测试/开发以外的任何环境中使用它都是不明智的,因为它会向所有源代码打开WebAPI,并带来潜在的安全问题。第二个链接(虽然有点过时)更详细地解释了如何允许CORS以及每段代码的作用

链接1:

链接2:

我希望这能帮助其他人。我很高兴我没有发疯,我的代码是正确的,这只是一个权限问题


非常感谢Stephan和ADyson对答案的投入和指导

将方法更改为
public List Get()
,并
返回(不要在
http://localhost:51730
-一旦发布,它就不会工作)谢谢你,我做了你建议的更改,WebAPI正在推出JSON,但是,日历中仍然没有显示JSON中的事件。嗯,如果API真的输出了上面示例中给出的JSON,那么它应该可以完美地工作。请看-我刚刚在一个示例URL中放置了相同的JSON(您可以在myjson.com上执行相同的操作),作为事件完美显示的端点。因此,我建议要么它实际上没有生成正确的JSON,要么它有其他问题。从上面的代码很难判断,理论上讲,这是可行的。也许您还有其他一些控制台/脚本错误?您是否已在浏览器的网络工具中验证对API的请求是否正确?请将方法更改为
public List Get()
,然后
返回API;
$(document).ready(function () {

    $('#calendar').fullCalendar({})

});


 $('#calendar').fullCalendar({
    events: 'http://localhost:51730/api/values'

});