asp.net结合wmi操作IIS创建站点

IIS6.0网站创建与权限问题解决
本文详细介绍了使用IIS6.0在Windows Server 2003环境下通过C#代码创建网站的过程及遇到的权限问题解决办法。重点讲解了如何通过模拟账户解决访问被拒绝的问题。

 

第一次的代码如下,问题是,本地调试可以,但是通过web访问却总是 提示,无法为本地创建连接凭证 或者是 访问被拒绝。

public  addsite( string  virdirpath, string  virdirname, string  srvip, string  webname, string  port, string  uname, string  domain, string  pwd)
    
{
        
// path to root of virtual directory, is not created by creating the site!!
        string rootVirtualDir = virdirpath;// "d:/NewSite";
        string site = virdirname;// "MySpecialSite";
        ConnectionOptions oConn = new ConnectionOptions();
        oConn.EnablePrivileges 
= true;
        oConn.Authentication 
= AuthenticationLevel.Default;
        oConn.Impersonation 
= ImpersonationLevel.Impersonate;
        
//oConn.Authority = "NTLMDOMAIN:HCTECH-DQ1TF02Y";
        
//oConn.Username = "wmi";
        
//oConn.Password = "wmi";

        System.Web.HttpContext.Current.Response.Write(
"Authentication=" + oConn.Authentication.ToString() + "<hr>");
        System.Web.HttpContext.Current.Response.Write(
"Username=" + oConn.Username + "<hr>");
        System.Web.HttpContext.Current.Response.Write(
"EnablePrivileges=" + oConn.EnablePrivileges.ToString() + "<hr>");
        System.Web.HttpContext.Current.Response.Write(
"Authority=" + oConn.Authority + "<hr>");
        System.Web.HttpContext.Current.Response.Write(
"Impersonation=" + oConn.Impersonation.ToString() + "<hr>");
        System.Web.HttpContext.Current.Response.Write(
"Locale=" + oConn.Locale + "<hr>");

            ManagementPath myPath 
= new ManagementPath();
            myPath.Server 
= srvip;// "192.168.0.10";
            myPath.NamespacePath = @"rootMicrosoftIISv2";
            myPath.RelativePath 
= "IIsWebService.Name='W3SVC'";//"//./root/MicrosoftIISv2"
            ManagementScope scope = new ManagementScope(myPath, oConn);
            
using (ManagementObject nac = new ManagementObject(scope, myPath, null))
            
{
                
// create a ServerBinding WMI object
                ManagementObject Bindings = CreateInstance(oConn, srvip);
                Bindings[
"IP"= srvip;// "192.168.0.10";
                Bindings["Hostname"= webname;// "hctech-dq1tfo2y";
                Bindings["Port"= port;// "8083";
                Bindings.Put(); //to commit the new instance.
                ManagementBaseObject[] ServerBindings = new ManagementBaseObject[1];
                ServerBindings[
0= Bindings as ManagementBaseObject;
                
// create the site using the new bindings
                string ret = CreateNewSite(nac, rootVirtualDir, ServerBindings, site);
                
//Response.Write(ret);
                
// continue to configure and eventually manage the web server (start,
                
// stop etc..)
            }
     
      
    }




    
//  Create bindings object in WMI repository
     public   static  ManagementObject CreateInstance(ConnectionOptions
    oConn,
string  srvip)
    
{
        ManagementScope mScope 
= null;
        ManagementPath mPath 
= new ManagementPath();
        mPath.ClassName 
= "ServerBinding";
        mPath.NamespacePath 
= "root/MicrosoftIISv2";
        mScope 
= new ManagementScope(mPath, oConn);
        mScope.Path.Server 
= srvip;// "192.168.0.10";
        return new ManagementClass(mScope, mPath,
        
null).CreateInstance();
    }

    
//  Create new site
     public   static   string  CreateNewSite(ManagementObject nac,  string
    PathOfRootVirtualDir, ManagementBaseObject[] ServerBindings,
    
string  ServerComment /*, int ServerId*/ )
    
{
        ManagementBaseObject inP 
= null;
        inP 
= nac.GetMethodParameters("CreateNewSite");
        inP[
"PathOfRootVirtualDir"= PathOfRootVirtualDir;
        inP[
"ServerBindings"= ServerBindings;
        inP[
"ServerComment"= ServerComment;
        
// inP["ServerId"] = ServerId; // Let the system create an ID
        
//(calculated hash of ServerComment)
        ManagementBaseObject outP = nac.InvokeMethod("CreateNewSite", inP, null);
        
return System.Convert.ToString(outP.Properties["ReturnValue"].Value);
        
// Returns something like: IIsWebServer='W3SVC/1273343373'
        
// this can be used to further configure/customize the webserver
    }

其中加了些调试的代码。

后来找了好久,总算把最后的问题解决了。使用模拟账户。这样比在web.config里添加<identity />节点要安全些。参考文章地址,http://support.microsoft.com/?kbid=306158#4

如果使用上文中提到的第三种方法,则会出现(匿名标识不能执行模拟)的错误。搞了半天才知道这个原因。因为第三种方法中的User.Identity是匿名用户的登陆。

我的平台是IIS6.0,WIN2K3,vs2005

最后的代码难得贴了,占页面得很。附上工程文件:http://download1.youkuaiyun.com/down3/20070601/01141423195.rar
reg.aspx是调用文件,addsite.cs是类文件。全部功能的实现。default.aspx是不相关的文件。
我的配置:IIS6.0,WIN2K3,.NET FRAMEWORK2.0
                    服务器上有个管理员叫 wmi 密码也是 wmi

 我还在完整这个 工程,要做一个虚拟主机管理系统。创建网站这块已经解决了。ftp使用servu的ODBC功能.

不知道还有哪些安全方面的设置要设置。

网上的人解决了都没看到具体的解决方案,这里给出来。希望你对这个有更好的改进的时候,发一份工程文件到我的邮箱debug1984@126.com

内容概要:本文介绍了一个基于多传感器融合的定位系统设计方案,采用GPS、里程计和电子罗盘作为定位传感器,利用扩展卡尔曼滤波(EKF)算法对多源传感器数据进行融合处理,最终输出目标的滤波后位置信息,并提供了完整的Matlab代码实现。该方法有效提升了定位精度与稳定性,尤其适用于存在单一传感器误差或信号丢失的复杂环境,如自动驾驶、移动采用GPS、里程计和电子罗盘作为定位传感器,EKF作为多传感器的融合算法,最终输出目标的滤波位置(Matlab代码实现)机器人导航等领域。文中详细阐述了各传感器的数据建模方式、状态转移与观测方程构建,以及EKF算法的具体实现步骤,具有较强的工程实践价值。; 适合人群:具备一定Matlab编程基础,熟悉传感器原理和滤波算法的高校研究生、科研人员及从事自动驾驶、机器人导航等相关领域的工程技术人员。; 使用场景及目标:①学习和掌握多传感器融合的基本理论与实现方法;②应用于移动机器人、无人车、无人机等系统的高精度定位与导航开发;③作为EKF算法在实际工程中应用的教学案例或项目参考; 阅读建议:建议读者结合Matlab代码逐行理解算法实现过程,重点关注状态预测与观测更新模块的设计逻辑,可尝试引入真实传感器数据或仿真噪声环境以验证算法鲁棒性,并进一步拓展至UKF、PF等更高级滤波算法的研究与对比。
内容概要:文章围绕智能汽车新一代传感器的发展趋势,重点阐述了BEV(鸟瞰图视角)端到端感知融合架构如何成为智能驾驶感知系统的新范式。传统后融合与前融合方案因信息丢失或算力需求过高难以满足高阶智驾需求,而基于Transformer的BEV融合方案通过统一坐标系下的多源传感器特征融合,在保证感知精度的同时兼顾算力可行性,显著提升复杂场景下的鲁棒性与系统可靠性。此外,文章指出BEV模型落地面临大算力依赖与高数据成本的挑战,提出“数据采集-模型训练-算法迭代-数据反哺”的高效数据闭环体系,通过自动化标注与长尾数据反馈实现算法持续进化,降低对人工标注的依赖,提升数据利用效率。典型企业案例进一步验证了该路径的技术可行性与经济价值。; 适合人群:从事汽车电子、智能驾驶感知算法研发的工程师,以及关注自动驾驶技术趋势的产品经理和技术管理者;具备一定自动驾驶基础知识,希望深入了解BEV架构与数据闭环机制的专业人士。; 使用场景及目标:①理解BEV+Transformer为何成为当前感知融合的主流技术路线;②掌握数据闭环在BEV模型迭代中的关键作用及其工程实现逻辑;③为智能驾驶系统架构设计、传感器选型与算法优化提供决策参考; 阅读建议:本文侧重技术趋势分析与系统级思考,建议结合实际项目背景阅读,重点关注BEV融合逻辑与数据闭环构建方法,并可延伸研究相关企业在舱泊一体等场景的应用实践。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值