首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ICAL文件验证(ICAL .NET)

ICAL文件验证(ICAL .NET)
EN

Stack Overflow用户
提问于 2020-06-02 18:12:12
回答 1查看 821关注 0票数 0

我使用ICAL .NET在我的application核心应用程序中创建一个.NET链接。我的服务代码灵感来自this post

代码语言:javascript
复制
        [AllowAnonymous]
        [HttpGet("ical/{icalSecret:Guid}")]
        public IActionResult GetICalFeed(Guid icalSecret)
        {

            var calendar = this.eventService.GetUserCalendar(icalSecret);
            var serializer = new CalendarSerializer();
            var serializedCalendar = serializer.SerializeToString(calendar);
            var contentType = "text/calendar";
            var bytes = Encoding.UTF8.GetBytes(serializedCalendar);

            return File(bytes, contentType, "calendar.ics");
        }

以及生成日历的方法:

代码语言:javascript
复制
        public Calendar GetUserCalendar(Guid icalSecret)
        {
            var user = this._userRepository.GetByICalSecret(icalSecret);
            var events = this._eventRepository.GetUserFutureEvents(user.Id);

             var calendarEvents = events.Select(evt => new CalendarEvent()
             {
                 Start = new CalDateTime(evt.Start),
                 End = new CalDateTime(evt.End),
                 Attendees = evt.Participations.Select(p => new Attendee(){CommonName = p.User.Username, Value = new Uri($"mailto:{p.User.Email}")}).ToList(),
                 Description = evt.Description
             });

             var calendar = new Calendar();
             foreach (var calendarEvent in calendarEvents)
             {
                 calendar.Events.Add(calendarEvent);
             }

             return calendar;
        }

返回的ical文件对我来说似乎没问题:

代码语言:javascript
复制
BEGIN:VCALENDAR
PRODID:-//github.com/rianjs/ical.net//NONSGML ical.net 4.0//EN
VERSION:2.0
BEGIN:STRING
ATTENDEE;CN=test mail:mailto:test@test.fr
ATTENDEE;CN=test droits:mailto:test@test.fr
ATTENDEE;CN=jm:mailto:test@test.com
ATTENDEE;CN=test:mailto:test@test.fr
DESCRIPTION:string
DTEND:20200610T093036
DTSTAMP:20200602T093344Z
DTSTART:20200610T093036
SEQUENCE:0
UID:a8845fea-6d16-49df-aa5e-a8cf61e1575a
END:STRING
END:VCALENDAR

但windows日历应用程序无法打开它(说它已损坏),并且无法在this ICAL validator上进行验证。

你知道我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-02 19:01:17

好了,原来我在ICAL.NET中使用了错误的字段来存储我的事件名称,应该使用字段Summary而不是字段Name

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62149655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档