2013-06-03 64 views
3

我正在向將處理Office 365帳戶供應的C#(.NET 4.5)網站添加頁面。我從Microsoft發現了一個有用的utility,它是一個通過PowerShell調用管理Office 365用戶的Windows應用程序。這個應用程序在我的Windows 7機器上運行得很好,並允許我配置/編輯用戶帳戶。當我從the tool採用完全相同的ExcutePowershellCommands()方法並將其放入我的Web應用程序中時,它不起作用,表示我嘗試的任何Office 365 cmdlet都無法識別。根據該工具的說明,這是因爲用戶帳戶沒有運行Windows PowerShell的權限,這很有意義,因爲IIS將在運行本機Windows應用程序的單獨用戶帳戶下運行代碼。爲什麼C#Powershell方法在Windows應用程序中工作但不是Web應用程序

如果我將代碼中的ExcutePowershellCommands()與模擬本地管理員的using()塊環繞,則該功能在我的Web應用程序中起作用。但是,如果我創建一個調用ExcutePowershellCommands()函數並運行測試的單元測試,則只會收到錯誤,指出Office 365 cmdlet無法識別(即使我仍然有模擬管理員的using()塊中包含該函數)。有沒有辦法找出運行單元測試的哪個帳戶(使用TestDriven.Net)?爲什麼如果我做假冒,它甚至會影響單元測試運行的帳戶?

謝謝!

+2

聽起來好像Office 365的cmdlet沒有加載您的IIS帳戶運行的配置文件。我無法確定你可能需要添加什麼才能讓他們識別。我首先看看運行'gc $ profile'返回的內容是否在那裏引用。 – Goyuix

+0

看起來我沒有配置文件,因爲我輸入'$ profile'時列出的路徑中沒有文件。 – kd7iwp

回答

0

原來的問題,曾與在IIS應用程序池爲我的應用程序被設置爲False服務器上的Load User Profile選項做(False是Windows Server 2008的默認設置)。讀完這個屬性之後,我不完全確定爲什麼這對我的場景很重要,但是這是我的本地機器上IIS的設置與Web服務器的不同之處。現在所有的PowerShell調用都可以在服務器上完美地工作。

相關問題