C# 如何通过当前Windows用户凭据连接到Exchange Server?

C# 如何通过当前Windows用户凭据连接到Exchange Server?,c#,.net,windows-authentication,exchangewebservices,C#,.net,Windows Authentication,Exchangewebservices,问题出在哪里? 我们在VS2013中有一个Exchange Server 2010 SP2、IIS 7.5和一个控制台应用程序 因此,我们做了以下工作: TimeZoneInfo timeZone = TimeZoneInfo.Local; ExchangeService EWSservice = new ExchangeService(ExchangeVersion.Exchange2010_SP2, timeZone); //EWSservice.Url = new Uri("our url

问题出在哪里?

我们在VS2013中有一个Exchange Server 2010 SP2、IIS 7.5和一个控制台应用程序

因此,我们做了以下工作:

TimeZoneInfo timeZone = TimeZoneInfo.Local;
ExchangeService EWSservice = new ExchangeService(ExchangeVersion.Exchange2010_SP2, timeZone);
//EWSservice.Url = new Uri("our url");
EWSservice.AutodiscoverUrl("my@mail.com", RedirectionUrlValidationCallback);
定义url的两种方法都有效。 正在尝试设置凭据:

EWSservice.Credentials = new WebCredentials("my@mail.com", "mypass"); 
这也行得通。但是我想使用当前的Windows用户凭据进行连接。已使用并崩溃的一些代码示例:

  • EWSservice.Credentials=新建
    WebCredentials(CredentialCache.DefaultCredentials)

  • EWSservice.UseDefaultCredentials=true

  • EWSservice.Credentials=
    (网络凭据)CredentialCache.DefaultCredentials
所有这些都返回了一个401错误:未经授权

此外,我还对app.config进行了如下编辑-但不起作用:

<authentication mode="Windows">
    </authentication>
    <identity impersonate="false"/>
    <!--Other stuff-->
</authentication>

有什么想法吗?

我认为你的方法不可行,但你可能想看看这个


那么,是控制台应用程序失败了,还是您正试图在ASP.net中执行此操作?您可能希望查看fiddler中的一些请求,并了解它试图使用的身份验证头(例如Basic或NTLM)。这是旧的,但鉴于EWS管理的API仍然使用Httpwebrequest,它仍然在控制台应用程序中出现。使用HttpWebRequest返回401错误,我将从广告中获得什么样的详细信息?用户邮件已经知道您的问题是:如何获取当前用户凭据我错了吗?如果您已经有了当前的用户邮件,那么我认为您处理问题的方式是错误的。您需要一个具有模拟其他帐户权限的单一帐户凭据。通过此操作,您只需拥有一个用户名和密码,然后,如果您想访问其他人的邮箱,则只需要邮件
HTTP/1.1 401 Unauthorized
Content-Length: 0
Date: Wed, 20 Apr 2016 07:59:01 GMT
Set-Cookie: exchangecookie=bfab7cdda62a4bf8be5b43689199fcf6; expires=Thu, 20-Apr
-2017 07:59:02 GMT; path=/; HttpOnly
Server: Microsoft-IIS/7.5
WWW-Authenticate: Basic realm="our-domain"
X-Powered-By: ASP.NET