Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 远程检查exchange凭据并检查已登录的用户_C#_Winforms_Exchangewebservices_Exchange Server 2010 - Fatal编程技术网

C# 远程检查exchange凭据并检查已登录的用户

C# 远程检查exchange凭据并检查已登录的用户,c#,winforms,exchangewebservices,exchange-server-2010,C#,Winforms,Exchangewebservices,Exchange Server 2010,我尝试过,但没有多大成功。基本上我需要使用EWS远程登录到Exchange 问题是我不知道用户是否登录正常,或者凭据是否错误,因为我没有得到任何回复!如果我提供了错误的凭据,软件将继续运行 我已经检查了有关EWS的MSDN内容,它向您展示了如何连接到exchange,但没有验证凭据 下面是我目前必须连接的代码 public void connect(string Email, string Password) { try {

我尝试过,但没有多大成功。基本上我需要使用EWS远程登录到Exchange

问题是我不知道用户是否登录正常,或者凭据是否错误,因为我没有得到任何回复!如果我提供了错误的凭据,软件将继续运行

我已经检查了有关EWS的MSDN内容,它向您展示了如何连接到exchange,但没有验证凭据

下面是我目前必须连接的代码

public void connect(string Email, string Password)
    {
        try
        {            
            _useremail = Email;
            _userpass = Password;

            // Define the credentials to use.
            var credentials = new WebCredentials(_useremail, _userpass);

            _ExchangeServer = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
            _ExchangeServer.Credentials = credentials;
            _ExchangeServer.Url = new Uri(_ExchangeEWSURL);
            _ExchangeServer.Timeout = 60;
            _ExchangeServer.KeepAlive = true;
            _ExchangeConnected = true;
        }
        catch (Exception ex)
        {
            _ExchangeConnected = false;
            throw ex;
        }
    }

正如你现在看到的,我只是在类中将bool值设置为true。有什么想法吗?

为了检查给定的凭据是否有效,您必须查询您希望用户能够访问的资源(日历、收件箱、联系人等)。没有显式的登录方法-当您请求用户资源时(通过、等)会隐式进行身份验证。

感谢SliverNinja(伟大的名字,顺便说一句),我可以做一个PrincipalContext吗?遗憾的是,服务器现在给了我401个,所以我无法测试:(如果您只是想确保凭据有效,而不是测试对特定资源的访问,您可以这样调用
exchService.ConvertIds(new AlternateId[]{new AlternateId(IdFormat.HexEntryId,“00”,email)},IdFormat.hexextryId)
如果凭证错误,则会出现异常这里有一些使用FindFolders()的示例代码: