【问题标题】:O365 via PowerShell in ASP.NET MVC 3: MicrosoftOnlineException was thrown在 ASP.NET MVC 3 中通过 PowerShell 的 O365:抛出 MicrosoftOnlineException
【发布时间】: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


    【解决方案1】:

    我找到了解决办法!

    我不知道原因,但在目标服务器上,我的应用程序的应用程序池的高级设置已将 Load User Profile 设置为 False。我把它改回True(这应该是默认的),瞧,它可以工作了!

    编辑:加载用户配置文件设置显然默认自动设置为False,因为安装了 IIS 6.0 管理器并且@ 987654324@ 是 IIS 6.0 之前的默认行为。

    【讨论】:

    • 老实说,我什至无法形容我是多么感激你真的回来并回答了这个问题。我花了大约 2 天的时间试图追查这件事……说真的,我感激不尽!
    猜你喜欢
    • 1970-01-01
    • 2012-03-30
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 1970-01-01
    • 2012-12-25
    • 2011-04-24
    相关资源
    最近更新 更多