UseDefaultCredentials出了什么问题

时间:2009-10-05 07:36:40

标签: .net asp.net security

我正在使用从Exchange 2007 SP1服务器公开的Exchange Web服务来创建来自我的应用程序的电子邮件,我已经解决了一个我无法弄清楚的问题。

我收到此回复“当作为没有邮箱的帐户发出请求时,您必须为任何可识别的文件夹ID指定邮箱主SMTP地址。”每次我尝试从Web应用程序CreateItem()

这仅在UseDefaultCredentials = True时在Windows 2003 + IIS6上发生。但是如果我使用New System.Net.NetworkCredential("user","password")设置凭据就可以了。后者不是生产中的选择。

最奇怪的是UseDefaultCredentials = True如果我在本地机器上从VS2008运行它(但是交换服务器是同一个远程机器),它就可以工作。有什么问题?

为了使这个更具可读性,我在下面粘贴了一个使用Exchange WS API 1.0的代码示例。但如果我直接使用Exchange WS,那就是同样的问题。

    Dim serviceObj As ExchangeService = _
        New ExchangeService(ExchangeVersion.Exchange2007_SP1)
    serviceObj.UseDefaultCredentials = True
    serviceObj.Url = New Uri(serviceUrl)
    Dim message = New EmailMessage(serviceObj)
    message.Subject = "Greetings"
    message.Body = New MessageBody(BodyType.Text, "Hello World")
    message.ToRecipients.Add("example@domain.com")
    message.SendAndSaveCopy()

感谢任何想法。

2 个答案:

答案 0 :(得分:0)

这是桌面应用还是网络应用?如果是后者,也许DefaultCredentials正在使用应用程序池标识?

使用时会发生什么:

System.Net.CredentialCache.DefaultCredentials

UseDefaultCredentials为false?

答案 1 :(得分:-2)

使用模拟解决了问题。