如何使用.Net操作IIS发布MVC3项目

lyzcren 2017-04-19 12:02:35
最近想搞一个自动发布的工具,大概思路就是更新数据库,然后发布项目到IIS。哪里出问题就整个回滚。
然后在操作IIS新建站点时遇到了问题(在IIS手动发布的时候是正常的)。

下面是操作的代码:
方法1:

ServerManager serverManager = new ServerManager();
#region 添加网站
Site mySite = serverManager.Sites.Add("WGHrmsSite", @"C:/Websites/WGHrms/", 8090);
mySite.ServerAutoStart = true;
mySite.Applications[0].ApplicationPoolName = "ASP.NET v4.0";
serverManager.CommitChanges();
#endregion


方法2:


CreateWebSite("TestWeb", "c:/Websites/WGHrms/", "*:8090", "ASP.NET v4.0");

public static int CreateWebSite(string webSiteName, string physicalPath, string domainPort, string AppPoolName)
{
DirectoryEntry root = new DirectoryEntry("IIS://" + HostName + "/W3SVC");
// 为新WEB站点查找一个未使用的ID
int siteID = 1;
foreach (DirectoryEntry e in root.Children)
{
if (e.SchemaClassName == "IIsWebServer")
{
int ID = Convert.ToInt32(e.Name);
if (ID >= siteID) { siteID = ID + 1; }
}
}
// 创建WEB站点
DirectoryEntry site = (DirectoryEntry)root.Invoke("Create", "IIsWebServer", siteID);
site.Invoke("Put", "ServerBindings", domainPort + ":");
//site.Invoke("Put", "ServerComment", webSiteName);
//site.Invoke("Put", "KeyType", "IIsWebServer");
//site.Invoke("Put", "ServerState", 2);
//site.Invoke("Put", "FrontPageWeb", 1);
//site.Invoke("Put", "DefaultDoc", "Default.html");
//// site.Invoke("Put", "SecureBindings", ":443:");
//site.Invoke("Put", "ServerAutoStart", 1);
//site.Invoke("Put", "ServerSize", 1);
//site.Invoke("SetInfo");
// 创建应用程序虚拟目录

DirectoryEntry siteVDir = site.Children.Add("Root", "IISWebVirtualDir");
siteVDir.Properties["AppIsolated"][0] = 2;
siteVDir.Properties["Path"][0] = physicalPath;
siteVDir.Properties["AccessFlags"][0] = 513;
siteVDir.Properties["FrontPageWeb"][0] = 1;
siteVDir.Properties["AppRoot"][0] = "LM/W3SVC/" + siteID + "/Root";
siteVDir.Properties["AppFriendlyName"][0] = "Root";
siteVDir.Properties["AppPoolId"][0] = AppPoolName;
siteVDir.Properties["AccessRead"][0] = true;//读取访问的权限
siteVDir.Properties["AccessScript"][0] = true;//脚本访问权限 PS:可根据需要开放权限

siteVDir.CommitChanges();
site.CommitChanges();
return siteID;
}


但无论使用哪种方法创建的网站都有同一个问题。
在IIS管理器中打开会发现网站好像读取不到项目下的web.config文件,而且身份验证下的“Forms身份验证”无法启用。



...全文
97 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,570

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧