asp.net C 适用于多个用户的EWS通知中心
我的计划是创建一个通知中心,在每个用户登录到asp应用程序时为其预订,并为他们监听通知.当收到通知时,项目
我正在尝试创建一个服务来将交换通知推送到asp.net应用程序,最终使用SignalR. 我的计划是创建一个通知中心,在每个用户登录到asp应用程序时为其预订,并为他们监听通知.当收到通知时,项目的第二部分是使用signalR仅向每个用户发送正确的通知.一旦他们注销或超时,通知中心将取消订阅. 到目前为止,我已经完成了一些基本的测试,并且可以通过我的凭证硬编码在一个小的控制台应用程序中接收通知.我正在努力的是如何同时为多个人这样做.例如,我是否必须为每个用户创建单独的线程,还是有更好的方法? 我想无论我不得不使用模仿而不是持有每个用户的凭据吗?如果每个用户都有活动会话,我还必须找到一种自动刷新超时的方法. 下面是我发现并且一直在玩的一些代码,我将很感激任何想法或任何人可以分享我如何能够最好地实现这一目标的例子. 非常感谢 安迪 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Threading.Tasks; using Microsoft.Exchange.WebServices.Data; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2); service.Url = new Uri("https://server/EWS/Exchange.asmx"); service.Credentials = new NetworkCredential("user","pass","domain"); SetStreamingNotifications(service); while (true) { } } static void SetStreamingNotifications(ExchangeService service) { // Subscribe to streaming notifications on the Inbox folder,and listen // for "NewMail","Created",and "Deleted" events. StreamingSubscription streamingsubscription = service.SubscribeToStreamingNotifications( new FolderId[] { WellKnownFolderName.Calendar,WellKnownFolderName.Inbox },EventType.Created,EventType.Modified); StreamingSubscriptionConnection connection = new StreamingSubscriptionConnection(service,9); connection.AddSubscription(streamingsubscription); // Delegate event handlers. connection.OnNotificationEvent += new StreamingSubscriptionConnection.NotificationEventDelegate(OnEvent); connection.OnSubscriptionError += new StreamingSubscriptionConnection.SubscriptionErrorDelegate(OnError); connection.OnDisconnect += new StreamingSubscriptionConnection.SubscriptionErrorDelegate(OnDisconnect); connection.Open(); Console.WriteLine("--------- StreamSubscription event -------"); } static private void OnDisconnect(object sender,SubscriptionErrorEventArgs args) { // Cast the sender as a StreamingSubscriptionConnection object. StreamingSubscriptionConnection connection = (StreamingSubscriptionConnection)sender; // Ask the user if they want to reconnect or close the subscription. ConsoleKeyInfo cki; Console.WriteLine("The connection to the subscription is disconnected."); Console.WriteLine("Do you want to reconnect to the subscription? Y/N"); while (true) { cki = Console.ReadKey(true); { if (cki.Key == ConsoleKey.Y) { connection.Open(); Console.WriteLine("Connection open."); break; } else if (cki.Key == ConsoleKey.N) { // The ReadKey in the Main() consumes the E. Console.WriteLine("nnPress E to exit"); break; } } } } static void OnEvent(object sender,NotificationEventArgs args) { StreamingSubscription subscription = args.Subscription; // Loop through all item-related events. foreach (NotificationEvent notification in args.Events) { switch (notification.EventType) { case EventType.NewMail: Console.WriteLine("n-------------Mail created:-------------"); break; case EventType.Created: Console.WriteLine("n-------------Item or folder created:-------------"); break; case EventType.Deleted: Console.WriteLine("n-------------Item or folder deleted:-------------"); break; } // Display the notification identifier. if (notification is ItemEvent) { // The NotificationEvent for an e-mail message is an ItemEvent. ItemEvent itemEvent = (ItemEvent)notification; Console.WriteLine("nItemId: " + itemEvent.ItemId.UniqueId); } else { // The NotificationEvent for a folder is an FolderEvent. //FolderEvent folderEvent = (FolderEvent)notification; //Console.WriteLine("nFolderId: " + folderEvent.FolderId.UniqueId); } } } static void one rror(object sender,SubscriptionErrorEventArgs args) { // Handle error conditions. Exception e = args.Exception; Console.WriteLine("n-------------Error ---" + e.Message + "-------------"); } } } 解决方法 我解决这个问题的方法是:>拥有一个有权冒充所有用户的帐户. 这是我的代码的两个部分.忘记LogDevice它只是内部的东西. (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET Page_Init被解雇了两次!
- 如何保护我的ASP.NET AJAX应用程序?
- asp.net – 手动更新表单认证券:
- asp.net-mvc – ASP.NET捆绑/分类:包括动态生成的Javascri
- asp.net-mvc – MVC“添加控制器”是“无法检索元数据…配置
- asp.net-mvc – 从扩展Apicontroller的MVC控制器返回Json
- asp.net – $(“#dialog”).parent().appendTo($(“form:f
- 如何在ASP.NET和C#中加载下拉列表?
- Visual Studio无法在docker中运行ASP.NET Core应用错误CTC1
- ASP.NET自带对象JSON字符串与实体类的转换