windows-server-2008 - 401未授权,ExchangeService.SubscribeToPushNotifications

  显示原文与译文双语对照的内容
0 0

我已经编写了独立的Windows 表单应用程序,它使用 EWS ( 交换 Web服务 ) 托管API来监听特定邮件id上的新邮件事件。 我用模拟。这是我的代码的一部分:


service = new ExchangeService(SyncSettings.ExchangeServerVersion);
service.Credentials = new WebCredentials(userid, password);
service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, impersonatedUserId); 
service.Url = new Uri(exchnguri);

FolderId[] folders=new FolderId[1];
folders[0] = new FolderId(WellKnownFolderName.Inbox);
EventType[] events = new EventType[1];
events[0] = EventType.NewMail; 

subscription = service.SubscribeToPushNotifications(folders, new Uri(listenUri), notificationInterval,"", events);

在exchangeserver2003上,我提供了一个用户帐户特权来模拟另一个用户帐户。

当我在一个环境中运行应用程序。 但是,当我在另一个地方运行它时,会出现以下错误:


Immediate Stack Trace
===================================================================================
Microsoft.Exchange.WebServices.Data.ServiceRequestException : The request failed. The remote server returned an error: (401) Unauthorized.
 at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request)
 at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request)
 at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest`1.Execute()
 at Microsoft.Exchange.WebServices.Data.ExchangeService.SubscribeToPushNotifications(IEnumerable`1 folderIds, Uri url, Int32 frequency, String watermark, EventType[] eventTypes)
 at com.org.app.Class.startListeningPushNotifications(String listenUri, Int32 notificationInterval) in c:SWappClass.cs:line 156

Inner Exception 1 : Stack Trace
----------------------------------------------------------------------------- 
System.Net.WebException. The remote server returned an error: (401) Unauthorized.
 at System.Net.HttpWebRequest.GetResponse()
 at Microsoft.Exchange.WebServices.Data.EwsHttpWebRequest.Microsoft.Exchange.WebServices.Data.IEwsHttpWebRequest.GetResponse()
 at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request)

我在两个环境中观察到的唯一差异是:

在第一个环境中我使用 domainxuserx 登录( 。Outlook 网络访问),并将邮件发送到自帐户( 也就是说,到我登录的帐户),我将 userx@domainx.com 放入

但是在第二个环境中,我使用 domainxdcuserx ( 注意''在 domainxdc 中) 登录 owa,并将自己的邮件发送到域。 ( domainx.com 中没有'直流')

我不认为这会给我 401个未经授权的,因为我可以使用模仿和模拟帐户登录到 sdl 。 我已经在 2nd 环境中给出了模拟特权,与 1st 环境完全相同。

所以我为什么要得到 401个授权?

我们正在使用 Windows Server 2007和 2008 SP2.

时间: 原作者:

0 0

以下是try--might工作的内容:


service.CookieContainer = new CookieContainer();

我不太清楚为什么这样有帮助,在我的例子中,它将针对在线交换,而不是你的。 可以能有帮助,不会伤害。在这个,上有一篇博客文章,但是不确定这是否适用。

...