У меня есть процесс, который создает приложение и пул приложений, используя объект диспетчера сервера в пространстве имен Microsoft.Web.Administration, сначала создается пул приложений, а затем приложение, назначая вновь созданный пул приложений приложению, кодниже.
protected TResult UseServerManagerWrapper<TResult>(Func<ServerManager, TResult> func)
{
using (var serverManager = new ServerManager())
{
return func(serverManager);
}
}
Функция создания приложения
public void CreateApplication(String siteName, String parentApplicationName, String organisationName, String applicationName, String applicationPoolName)
{
UseServerManagerWrapper(serverManager =>
{
var site = serverManager.Sites[siteName];
var newApplication =
site.Applications.Add(
GetApplicationPath(parentApplicationName, organisationName, applicationName),
this.GetGeneratedApplicationPhysicalPath(siteName, parentApplicationName, organisationName, applicationName));
newApplication.ApplicationPoolName = applicationPoolName;
serverManager.CommitChanges();
return true;
});
}
и создание пула приложений.
public Boolean CreateApplicationPool(String applicationPoolName)
{
return UseServerManagerWrapper(serverManager =>
{
var appPool = serverManager.ApplicationPools.Add(applicationPoolName);
appPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
appPool.ManagedRuntimeVersion = "";
serverManager.CommitChanges();
return true;
});
}
Все это работает нормально, единственная проблема, которая у меня есть, заключается в том, что янеобходимо зайти в папку приложения и вручную назначить разрешения для пула приложений.
Я не вижу ничего в документации ServerManager, которая может мне помочь, и я не могу найти способ использовать метод Directory.SetAccessControl для предоставления разрешений пулу приложений.Есть ли способ сделать это в коде?
Извинения, если я использую неправильную терминологию или что-то еще, я новичок в публикации в целом.Дайте мне знать, если вам нужна дополнительная информация.