2012-05-25 7 views
1

У меня есть сайт для сброса пароля для моих пользователей 0ffice 365. Он запускает команды powershell в фоновом режиме для сброса паролей пользователей. По какой-то причине, когда я использую VS, и я запускаю браузер со страницей, он отлично работает. Однако, когда я запускаю его с живого сайта, я получаю эту ошибку.Доступ запрещен при использовании powershell на веб-сервере IIS

Processing data from remote server failed with the following error message: Access is denied. For more information, see the about_Remote_Troubleshooting Help topic. 

Страница ispx.net с кодом C#.

Я пробовал использовать класс имперсонатора, но это тоже не работает.

Вот некоторые из моих кодов.

using (new Impersonator("user", "domain", "pass")) 
    { 

     PSCredential creds = new PSCredential("office365email", "password"); 

     WSManConnectionInfo connectionInfo = new WSManConnectionInfo(
      new Uri("https://server.outlook.com/PowerShell-LiveID?PSVersion=2.0"), 
      "http://schemas.microsoft.com/powershell/Microsoft.Exchange", creds); 
     connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic; 



     Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo); 

     runspace.ApartmentState = System.Threading.ApartmentState.STA; 
     runspace.ThreadOptions = PSThreadOptions.UseCurrentThread; 

     try 
     { 


      runspace.Open(); 


      pipeline = runspace.CreatePipeline(); 

      Command forwardcommand = new Command("Set-Mailbox"); 
      forwardcommand.Parameters.Add("Identity", user); 
      forwardcommand.Parameters.Add("Password", pass); 




      pipeline.Commands.Add(forwardcommand); 

      try 
      { 
       pipeline.Invoke(); 



       runspace.Close(); 
       pipeline.Stop(); 
       return "Password Successfully Changed"; 



      } 
      catch (Exception er) 
      { 
       runspace.Close(); 
       pipeline.Stop(); 

       return er.Message; 


      } 
     } 
     catch (PSRemotingTransportException eer) 
     { 

      runspace.Close(); 


      return eer.Message;// "Server busy please try again later"; 
     } 
    } 

Любые идеи, почему я не могу сделать это с фактического сайта, но могу на своем локальном компьютере?

<authentication mode="Windows"/> 
    <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider"> 
     <providers> 
      <clear/> 
      <add connectionStringName="ApplicationServices" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider"/> 
      <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider"/> 
     </providers> 
    </roleManager> 
    <identity impersonate="true"/> 

ответ

1

Это может быть проблема с двойной ошибкой/проблема с безопасностью.

При запуске на локальном компьютере идентификатор Windows известен на той же машине.
При запуске на веб-сервере есть, по крайней мере, еще одна машина.

Релевантные вопросы включают: Какая идентификация используется IIS для запуска веб-страницы? Имеет ли этот идентификатор разрешения на использование сетей? Имеет ли этот идентификатор разрешения на сброс пароля на удаленном сервере?

+0

в моей веб-конфигурации У меня есть личность олицетворен = true, я не уверен, что именно она использует, но не существует. Где я могу проверить? – user541597

Смежные вопросы