4

当我尝试通过 ASP.NET 连接到 Exchange Web 服务时出现错误。

如果我通过控制台应用程序调用以下代码,但在 ASP.NET Web 表单页面上执行时,相同的代码会失败。顺便说一句,我在整个代码示例中都使用了我自己的凭据。

“当以没有邮箱的帐户发出请求时,您必须为任何可分辨的文件夹 Id 指定邮箱主 SMTP 地址。”

我想我可以通过指定一个模拟用户来解决这个问题。

exchangeservice.ImpersonatedUserId = 
    new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "email@domain.com");

但后来我得到一个不同的错误。

“该帐户无权模拟所请求的用户。”

运行 Web 应用程序的应用程序池也是我自己的帐户(与控制台应用程序相同),所以我不知道是什么导致了这个问题。

我正在使用 .NET 框架 3.5。

这是完整的代码。

var exchangeservice =
                        new ExchangeService(ExchangeVersion.Exchange2010_SP1)
                        {
                            Timeout = 10000
                        };

 var credentials = new System.Net.NetworkCredential("username", "pass", "domain");


exchangeservice.AutodiscoverUrl("email@domain.com")

FolderId rootFolderId = new FolderId(WellKnownFolderName.Inbox);

var folderView = new FolderView(100)
            {
                Traversal = FolderTraversal.Shallow
            };

            FindFoldersResults findFoldersResults =
                service.FindFolders(rootFolderId, folderView);
4

2 回答 2

1

您是否尝试过直接针对服务设置凭据?

this.exchangeService.Credentials = new WebCredentials("username", "pass");

this.exchangeService.AutodiscoverUrl("username", this.RedirectionUrlValidationCallback);

并将其用作验证回调..

    /// <summary>
    /// Redirections the URL validation callback.
    /// </summary>
    /// <param name="redirectionUrl">The redirection URL.</param>
    /// <returns>true if https</returns>
    private bool RedirectionUrlValidationCallback(string redirectionUrl)
    {
        // The default for the validation callback is to reject the URL.
        var result = false;

        var redirectionUri = new Uri(redirectionUrl);

        // Validate the contents of the redirection URL. In this simple validation
        // callback, the redirection URL is considered valid if it is using HTTPS
        // to encrypt the authentication credentials. 
        if (redirectionUri.Scheme == "https")
        {
            result = true;
        }

        return result;
    }
于 2012-12-10T10:44:17.710 回答
1

检查凭据并查看用户是否有足够的权限进行模拟。检查 EWS 限制策略并提供正确的权限将解决问题。

于 2012-12-12T17:02:08.343 回答