Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.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 Web服务:UseDefaultCredentials属性_C#_Exchange Server_Exchangewebservices_Credentials - Fatal编程技术网

C# Exchange Web服务:UseDefaultCredentials属性

C# Exchange Web服务:UseDefaultCredentials属性,c#,exchange-server,exchangewebservices,credentials,C#,Exchange Server,Exchangewebservices,Credentials,指示通过将UseDefaultCredentials属性设置为true,与Exchange服务器通信不需要登录名和密码。然而,这不是我的经验 我的代码创建了一个名为service的ExchangeService实例: ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010); 如果我按如下方式手动设置凭据,则一切正常: service.Credentials = new WebCredentials(

指示通过将UseDefaultCredentials属性设置为true,与Exchange服务器通信不需要登录名和密码。然而,这不是我的经验

我的代码创建了一个名为service的ExchangeService实例:

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);
如果我按如下方式手动设置凭据,则一切正常:

service.Credentials = new WebCredentials("my@email.address", "my password");
但是,如果我删除该行并用以下内容替换它,我的代码将无法工作:

service.UseDefaultCredentials = true;
我一直在寻找解决办法,但没有找到任何具体的办法。如果这里有人能帮助我,我将非常感激

编辑: 我尝试使用自己的凭据而不是默认凭据

string smtpaddress = "somesharedsmtp@domain.com";
es.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
es.Credentials = new WebCredentials("myemail", "mypassword");
es.AutodiscoverUrl(smtpaddress, RedirectionCallback);
FolderId SharedMailbox = new FolderId(WellKnownFolderName.Inbox, "somesharedsmtp@domain.com");
Folder sharedInbox = Folder.Bind(es, SharedMailbox);
此时,我可以选中包含收件箱详细信息的sharedInbox。我可以看到未读邮件数和其他

但当我访问

ItemView itemView = new ItemView(100);
FindItemsResults<Item> findResults1 = es.FindItems(pqInbox.Id, itemView);
ItemView ItemView=newitemview(100);
FindItemsResults findResults1=es.FindItems(pqInbox.Id,itemView);

我收到异常“SMTP地址没有与之关联的邮箱”

在这种情况下,我的经验是,如果您设置service.UseDefaultCredentials=true,您的电脑将被登录。如果您的服务器与exchangeserver位于相同的ActiveDirectory结构中,那么这一功能将非常完美。如果您试图从ADS外部连接到exchange服务器,则必须手动设置凭据

我在工作时正在使用工具的defaultcredentials。如果我在家连接,我必须设置凭据


希望对您有所帮助…

从MSDN文档中,Exchange Online中忽略了UseDefaultCredentials。您必须为Exchange Online指定凭据


非常感谢您的见解。我希望找到一种方法,将用户名和密码硬编码到代码中,但我认为这是不可能的。以前,我们的Exchange服务器驻留在公司的一台服务器上,但现在我们已迁移到Exchange Online,我们的Exchange服务器是[blahblahlbah]。outlook.com。您找到解决方案了吗?