通过ASP.NET MVC 3中的PowerShell O365:抛出MicrosoftOnlineException
我有一个ASP.NET MVC 3应用程序,它使用PowerShell连接到Office 365以检索有关用户许可证的一些详细信息。通过ASP.NET MVC 3中的PowerShell O365:抛出MicrosoftOnlineException
代码本身工作在很多情况下:
- 使用库的作品在我的机器上
- 一段代码在我的本地IIS项目工程
- 一段代码在LINQPad在LINQPad使用目标服务器
对图书馆工作和它不工作当然是唯一的地方,它真的应该工作:在我IS在目标服务器上。
调用Connect-MsolService
cmdlet时,我总是得到一个异常。问题是Exception并没有告诉我任何事情。
异常类型是
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
类的行50ff。)
问题是我不知道什么可能是错的,尤其是因为当我使用LINQPad时相同的代码工作。谷歌的搜索结果也无法帮助我。
服务器在Windows Server 2008 R2 Datacenter SP1上与IIS 7.5一起运行。
我找到了解决方案!
我不知道原因,但在目标服务器上,我的应用程序池的高级设置已设置为将用户配置文件加载到False
。我把它改回True
(这应该是默认值),并且它可以工作!
编辑:的加载用户配置设置显然是默认自动由于安装了IIS 6.0管理器设置为False
和False
是默认的行为,直到IIS 6.0。
老实说,我甚至不能远程形容我是多么感激你居然回来了,并回答了这个问题。我花了2天的时间试图追踪这件事......认真地,我不能够感谢你! – Roloc 2013-03-23 20:50:04