【发布时间】:2012-08-11 17:17:51
【问题描述】:
我有一个 ASP.NET MVC 3 应用程序,它使用 PowerShell 连接到 Office 365 以检索有关用户许可证的一些详细信息。
代码本身在很多情况下都有效:
- 我本地 IIS 中的项目有效
- LINQPad 中使用该库的一段代码在我的机器上运行
- LINQPad 中使用该库的一段代码在目标服务器上运行
它不工作的地方当然是它真正应该工作的唯一地方:目标服务器上的 IIS。
我在调用Connect-MsolService cmdlet 时总是遇到异常。问题是异常并没有告诉我任何事情。
异常类型是
Microsoft.Online.Administration.Automation.MicrosoftOnlineException
消息是
引发了“Microsoft.Online.Administration.Automation.MicrosoftOnlineException”类型的异常
这没什么用。
我在代码中使用的 Office 365 用户帐户始终相同。用于启动 IIS 的用户帐户也始终相同(本地系统)。
我将 PowerShell 代码执行封装在一个名为 PowerShellInvoker 的类中。它的代码可以在here找到。
这是连接到 Office 365 的代码:
var cred = new PSCredential(upn, password);
_psi = new PowerShellInvoker("MSOnline");
_psi.ExecuteCommand("Connect-MsolService", new { Credential = cred });
实际上没有异常抛出,错误在管道的Error属性中找到。 (参见PowerShellInvoker 类的第 50 行。)
问题是我不知道可能出了什么问题,特别是因为当我使用 LINQPad 时相同的代码可以工作。 Google 的搜索结果也帮不了我。
服务器在带有 IIS 7.5 的 Windows Server 2008 R2 Datacenter SP1 上运行。
【问题讨论】:
标签: c# asp.net-mvc-3 powershell office365