Почему пул приложений 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;
            }
        }

Что я здесь не так делаю?

2 ответа

Решение

Здесь происходит то, что при создании вашего сайта он автоматически присваивается 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();

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

Создайте пул приложений, который использует.NET 4.0

Другие вопросы по тегам