2016-01-23 8 views
1

Есть что-то ужасно неправильно ниже, но я просто не могу понять, что. Хотя сайт создан как шарм, пул приложений, который должен быть связан с ним, вообще не создается.Почему пул приложений IIS не создан вообще?

public string Create(string sitename) 
     { 
      try 
      { 
       using (ServerManager serverMgr = new ServerManager()) 
       { 
        string strhostname = sitename + "." + domain; 
        string bindinginfo = ":80:" + strhostname; 

        if (!IsWebsiteExists(serverMgr.Sites, strhostname)) 
        { 
         Site mySite = serverMgr.Sites.Add(strhostname, "http", bindinginfo, "C:\\admin\\" + domain); 

         ApplicationPool newPool = serverMgr.ApplicationPools.Add(strhostname); 
         newPool.ManagedRuntimeVersion = "v4.0"; 
         newPool.ManagedPipelineMode = ManagedPipelineMode.Integrated; 

         serverMgr.CommitChanges(); 
         return "Website " + strhostname + " added sucessfully"; 
        } 

        else 
        { 
         return "Name should be unique, " + strhostname + " already exists."; 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
       return ex.Message; 
      } 
     } 

Что я здесь делаю неправильно?

+0

Информационного связывание недействительно «: 80: что-то». Вам нужно это исправить. Попробуйте «*: 80: something». –

+0

@LexLi Спасибо, я сделал это по запросу, но проблема остается – OrElse

+0

Ваш код не представляет только одну проблему, но многие. Вам нужно будет найти подходящий образец для начала работы. –

ответ

1

То, что здесь происходит, что когда вы создаете ваш сайт автоматически получает назначение на DefaultAppPool.

Что вам нужно сделать, это заменить ваш сайт корняApplication (/) и указать его в пуле приложений вы только что создали.

Самый простой способ сделать это - сначала очистить коллекцию своего нового сайта Application, а затем добавить новое приложение , которое указывает на ваш пул приложений.

Принимая фрагмент кода я изменил его на следующее:

Site mySite = serverMgr.Sites.Add(strhostname, "http", bindinginfo, "C:\\admin\\" + domain); 

// Clear Applications collection 
mySite.Applications.Clear(); 

ApplicationPool newPool = serverMgr.ApplicationPools.Add(strhostname); 
newPool.ManagedRuntimeVersion = "v4.0"; 
newPool.ManagedPipelineMode = ManagedPipelineMode.Integrated; 

// Create new root app and specify new application pool 
Application app = mySite.Applications.Add("/", "C:\\admin\\" + domain); 
app.ApplicationPoolName = strhostname; 

serverMgr.CommitChanges(); 
+0

Это было действительно полезно, но я все еще не могу понять, почему для пула приложений установлено значение «ApplicationPoolIdentity» – OrElse

+0

@OrElse 'ApplicationPoolIdentity' является идентификатором того, что пул будет выполнять запросы в. В прежние дни Windows 2003 это будет «Сетевая служба». «ApplicationPoolIdentity» - это синтезированный идентификатор, созданный «на лету», когда ваш пул запущен г. Вы никогда не увидите его в менеджере пользователей Windows. Вопрос о 'ApplicationPoolIdentity' был бы совершенно отдельным. До сих пор я думаю, что мой ответ обеспечивает решение вашей текущей проблемы. – Kev

1

Я бы не ожидал, что имя пула приложений будет иметь знаки пунктуации. Добавление домена как части имени пула приложений немного необычно - возможно, это источник. Здесь обсуждается основной метод, а также синтаксис appcmd, чтобы сделать то же самое в командной строке. Попробуйте создать пул приложений в строке cmd, чтобы убедиться, что ваши параметры приемлемы.

Create an application pool that uses .NET 4.0

+0

ОШИБКА (сообщение: идентификатор не поддерживается в текущем использовании команды. Вы указали «test.example.com». Любые мысли? – OrElse

+0

Получили ли вы эту ошибку при запуске приложения командной строки appcmd? В этом случае я бы подумал он жаловался на «test.example.com» в качестве вашего имени пула приложений. Я точно не знаю, какие ограничения для именования находятся в пулах приложений, но я никогда не видел его с периодами. Попробуйте называть ваш пул приложений более простым как тест, например «myAppPool» вместо «test.example.com» – PhillipH

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

  • Нет связанных вопросов^_^