繁体   English   中英

ASP.NET C#-“ RPC服务器不可用”

[英]ASP.NET C# - “The RPC server is unavailable”

这是我在IIS中创建虚拟目录的代码:

/// <summary> 
/// Creates the virtual directory. 
/// </summary> 
/// <param name="webSite">The web site.</param> 
/// <param name="appName">Name of the app.</param> 
/// <param name="path">The path.</param> 
/// <returns></returns> 
/// <exception cref="Exception"><c>Exception</c>.</exception> 
public static bool CreateVirtualDirectory(string webSite, string appName, string path) 
{ 
    var schema = new DirectoryEntry("IIS://" + webSite + "/Schema/AppIsolated"); 
    bool canCreate = !(schema.Properties["Syntax"].Value.ToString().ToUpper() == "BOOLEAN"); 
    schema.Dispose(); 

    if (canCreate) 
    { 
        bool pathCreated = false; 
        try 
        { 
            var admin = new DirectoryEntry("IIS://" + webSite + "/W3SVC/1/Root"); 

            //make sure folder exists 
            if (!Directory.Exists(path)) 
            { 
                Directory.CreateDirectory(path); 
                pathCreated = true; 
            } 

            //If the virtual directory already exists then delete it 
            IEnumerable<DirectoryEntry> matchingEntries = admin.Children.Cast<DirectoryEntry>().Where(v => v.Name == appName); 
            foreach (DirectoryEntry vd in matchingEntries) 
            { 
                admin.Invoke("Delete", new[] { vd.SchemaClassName, appName });  
                admin.CommitChanges(); 
                break; 
            } 

            //Create and setup new virtual directory 
            DirectoryEntry vdir = admin.Children.Add(appName, "IIsWebVirtualDir"); 

            vdir.Properties["Path"][0] = path; 
            vdir.Properties["AppFriendlyName"][0] = appName; 
            vdir.Properties["EnableDirBrowsing"][0] = false; 
            vdir.Properties["AccessRead"][0] = true; 
            vdir.Properties["AccessExecute"][0] = true; 
            vdir.Properties["AccessWrite"][0] = false; 
            vdir.Properties["AccessScript"][0] = true; 
            vdir.Properties["AuthNTLM"][0] = true; 
            vdir.Properties["EnableDefaultDoc"][0] = true; 
            vdir.Properties["DefaultDoc"][0] = 
                "default.aspx,default.asp,default.htm"; 
            vdir.Properties["AspEnableParentPaths"][0] = true; 
            vdir.CommitChanges(); 

            //the following are acceptable params 
            //INPROC = 0, OUTPROC = 1, POOLED = 2 
            vdir.Invoke("AppCreate", 1); 

            return true; 
        } 
        catch (Exception) 
        { 
            if (pathCreated) 
                Directory.Delete(path); 
            throw; 
        } 
    } 
    return false; 
} 

该代码是从其他建议该代码的用户那里获取的,对他和其他用户来说很好用。

触发函数时出现的错误:

The RPC server is unavailable.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: The RPC server is unavailable.

我正在使用Windows Server 2008 R2,

IIS 7.5

ASP.NET 4.0

提前致谢!

您是否检查过以确保IISAdmin服务正在运行?

尝试运行:

net start iisadmin

防火墙? 检查您是否可以从同一服务器访问应用程序外部以进行确认。

您以什么用户身份运行此代码? 您需要具有管理员身份才能写入配置数据库,因此,例如,如果您使用匿名用户在IIS中运行此数据库,则您将无法写入配置数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM