我试图掌握在VS2013中调用Exchange Web服务的概念'但到目前为止失败了。
我在一个MS-exchange WS中获得了一个新的asmx-address,我将在VS2013中调用它。我是要从旧的地址改变它。 (对于我们旧的内部Exchange来说,这是一个很好的。)这个新的EWS云。但我无法理解我必须做些什么来使其发挥作用。
与EWS网址一起,我获得了密码和用户名。
此外,我还为Visual Studio 2013添加了" Microsoft Office 365 API工具"。
现在,当我想添加我的服务参考时。到我的服务项目。我去"添加|连接服务" (addOn之后的新选项)。然后我在VS中看到一个只有一个选项的对话框"注册你的应用程序"?!?!。那是什么呀?我首先关注的是为什么此对话框与此简介显示的内容不同Using the tool。 ... 什么样的应用程序?!?这不是一个应用程序开始 - 这是一个Web解决方案。这是我在这一步中唯一能做的事情。可以告诉我这里发生了什么吗?
我想要的只是:
我觉得我必须登录持有这些服务的MS帐户 - 可能使用我的凭据 - 或者其他什么?
我没有登录任何帐户。
有人可以告诉我为添加EWS而采取的步骤。
更确切地说 - 现有解决方案使用非EWS服务来呼叫我们的企业Exchange服务器。工作正常!现在我必须改为Office365 Exchange而不是Office 2010,我认为是。所以我收到了一个网址,以及这套UN / PSWD。 p>
我们的解决方案现在使用WCF服务,而不是REST。首先,我的印象是,只需更改网址,然后将System.Net.NetworkCredential(" userID","密码")凭据移交给我的代理。但是以正常的方式设置它是一个巨大的挑战。我去了#34;添加服务参考..."给了它asmx网址。在这一步仍然很好。首先是(A):
"服务器需要验证您的请求。您的凭据将以明文形式发送到服务器。你想继续吗?"
太公平了。然后它在一个名为" Discovery credential"的对话框中要求输入用户名/密码。说(B):
"服务' https://outlook.office365.com/EWS/Exchange.asmx/ $元数据' at需要用户名和密码。"
(什么?)。我在UN / PSWD写作,它进入了一个永恒的循环A-B-A-B ...
所以我放弃了以这种方式添加服务,并认为我的问题源于我的VS2013不是最新的某种方式。然后我添加了365 API工具。
我不明白为什么我无法以相同的方式将其添加到解决方案中,就像普通的IIS托管的WCF服务一样。这里有什么特别之处?
关于Microsoft.Exchange.WebServices。是的我想使用托管API(我认为)。我真正想要的是能够创建一个普通的代理实例并为其提供凭据并调用它。
将asmx放入IE仍然可以让我获得#34;您已经创建了一个服务。" -page success,但是尝试使用svcutil.exe工具失败了。由于某些元数据抱怨,它拒绝泄露服务的wsdl。
在某一点上,我在想这是否会奏效:
https://outlook.office365.com/EWS/Exchange.asmx?user=UN&password=PSWD
如果需要,我可以做一个全代码解决方案。将端点,标题信息,用户名,密码,地址,绑定,协议等放在纯粹的C#中......但是这种方法很烦人,也许徒劳无功。
我的同事,位于芬兰,告诉我它运作得很好。但是在丹麦,我无法达到它或某些东西(?)。他在谈论活动目录和UPN,但我对此并不了解。
非常感谢任何提示。
答案 0 :(得分:0)
连接的服务向导将使用新的Office 365 REST API,而不是Exchange Web服务。如果您当前正在使用EWS,那么您需要更改的内容取决于您使用它的方式。
您的应用中是否有Microsoft.Exchange.WebServices
的引用?如果是这样,您正在使用托管API,并且您可能只需要在设置Url
对象的ExchangeService
属性的任何位置进行更改。
另一方面,如果您添加了一个服务引用,它会导致Visual Studio读取WSDL并为您创建代理类(可能会命名为ExchangeServicePortType
或{{1}然后,您需要使用他们提供给您的ASMX URL删除旧服务引用并添加新服务引用。该过程的一部分将提示您输入用户名和密码以下载WSDL。
答案 1 :(得分:0)
好的...... CodeProject拥有它 - 解决方案是,所有代码:
[TestMethod]
public void CallEWS()
{
var ws = new ExchangeService(ExchangeVersion.Exchange2013);
ws.Credentials = new WebCredentials(UN, PSWD);
try
{
ws.AutodiscoverUrl(URL, RedirectionCallback);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
var message = new EmailMessage(ws);
message.Subject = "Interesting";
message.Body = "The proposition has been considered.";
message.ToRecipients.Add("myself@ourcorp.dk");
message.SendAndSaveCopy();
}
public static bool RedirectionCallback(string url)
{
// Return true if the URL is an HTTPS URL.
return url.ToLower().StartsWith("https://");
}
但网址必须是电子邮件。所以URL = UN。
使用:
C:\Program Files (x86)\Microsoft\Exchange\Web Services\2.1\Microsoft.Exchange.WebServices.dll
using Microsoft.Exchange.WebServices;
using Microsoft.Exchange.WebServices.Autodiscover;
using Microsoft.Exchange.WebServices.Data;
using Microsoft.Exchange.WebServices.Dns;
(我的第一个Office365 WS)