Asp.net mvc 4 我如何创建一个";互联网日历订阅“;对于Outlook?

Asp.net mvc 4 我如何创建一个";互联网日历订阅“;对于Outlook?,asp.net-mvc-4,outlook,icalendar,Asp.net Mvc 4,Outlook,Icalendar,目前,用户添加了一个“新的互联网日历”,但它是ICS文件的一次性下载。我希望用户单击一个按钮,将其个人日历添加为Outlook订阅。我想要自动更新 与SharePoint中一样,名为“连接到Outlook”的按钮将您正在查看的日历作为自动同步日历添加到Outlook中。并告诉我您应该使用 DDay.iCal是用于.NET 2.0及更高版本Silverlight的iCal(RFC 5545)类库。它的目标是尽可能符合RFC 5545,同时瞄准与流行日历应用程序(如Apple iCal、Outloo

目前,用户添加了一个“新的互联网日历”,但它是ICS文件的一次性下载。我希望用户单击一个按钮,将其个人日历添加为Outlook订阅。我想要自动更新

与SharePoint中一样,名为“连接到Outlook”的按钮将您正在查看的日历作为自动同步日历添加到Outlook中。

并告诉我您应该使用

DDay.iCal是用于.NET 2.0及更高版本Silverlight的iCal(RFC 5545)类库。它的目标是尽可能符合RFC 5545,同时瞄准与流行日历应用程序(如Apple iCal、Outlook 2007等)的兼容性

部分iCal+MVC+DDay.iCal

public ActionResult iCalendar(string DownloadFileName)
{
    DDay.iCal.iCalendar iCal = new DDay.iCal.iCalendar();

    Event evt = iCal.Create<Event>();
    evt.Start = iCalDateTime.Today.AddHours(8);
    evt.End = evt.Start.AddHours(18); // This also sets the duration
    evt.Description = "The event description";
    evt.Location = "Event location";
    evt.Summary = "18 hour event summary";

    evt = iCal.Create<Event>();
    evt.Start = iCalDateTime.Today.AddDays(5);
    evt.End = evt.Start.AddDays(1);
    evt.IsAllDay = true;
    evt.Summary = "All-day event";

    ISerializationContext ctx = new SerializationContext();
    ISerializerFactory factory = new DDay.iCal.Serialization.iCalendar.SerializerFactory();
    IStringSerializer serializer = factory.Build(iCal.GetType(), ctx) as IStringSerializer;

    string output = serializer.SerializeToString(iCal);
    var contentType = "text/calendar";
    var bytes = Encoding.UTF8.GetBytes(output);

    return File(bytes, contentType, DownloadFileName);
}
public ActionResult iCalendar(字符串下载文件名)
{
DDay.iCal.iCalendar iCal=新的DDay.iCal.iCalendar();
Event evt=iCal.Create();
evt.Start=iCalDateTime.Today.AddHours(8);
evt.End=evt.Start.AddHours(18);//这也设置了持续时间
evt.Description=“事件描述”;
evt.Location=“事件位置”;
evt.Summary=“18小时事件摘要”;
evt=iCal.Create();
evt.Start=iCalDateTime.Today.AddDays(5);
evt.End=evt.Start.AddDays(1);
evt.IsAllDay=true;
evt.Summary=“全天活动”;
ISerializationContext ctx=新的SerializationContext();
ISerializerFactory=new DDay.iCal.Serialization.iCalendar.SerializerFactory();
IStringSerializer serializer=factory.Build(iCal.GetType(),ctx)作为IStringSerializer;
字符串输出=serializer.SerializeToString(iCal);
var contentType=“文本/日历”;
var bytes=Encoding.UTF8.GetBytes(输出);
返回文件(字节、内容类型、下载文件名);
}

首先感谢您的评论。我的应用程序已经有一个流,它为我的outlook提供ics文件。问题是,用户必须从internet通过add calendar=>在outlook中手动添加链接。我正试图通过单击一个按钮来解决这个问题。我还找到了dday ical,这就是我们的ics文件现在是如何生成的。也许这个修补程序可以帮上忙。因为当您单击ical时,默认情况下它应该在outlook中打开(当然,如果已安装),问题不是outlook没有打开它。问题是我想添加一个INTERNET日历,而不仅仅是一个一次性ics文件。当我只是让它手动生成并添加ics文件时,我再也无法获得internet更新。我不明白这如何能帮助我将其变成internet日历。你能解释一下.ics和.ical的区别吗?我在本地测试项目上切换了它,结果完全没有变化。如果你在这个url上添加一个
组织者
更多内容,应该可以