Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我的代码如何找到它';它在IIS中运行吗?_C#_Asp.net Mvc_Asp.net Mvc 3_Iis - Fatal编程技术网

C# 我的代码如何找到它';它在IIS中运行吗?

C# 我的代码如何找到它';它在IIS中运行吗?,c#,asp.net-mvc,asp.net-mvc-3,iis,C#,Asp.net Mvc,Asp.net Mvc 3,Iis,我的C#代码可能在IIS(目前为7.5,但我不希望依赖于特定版本)或其他版本下的MVC3应用程序中运行 似乎有一种方法可以知道代码在IIS下运行,但这种方法取决于硬编码文件名字符串 是否有一些编程方法可以检测我的代码是否在IIS下运行,而不取决于IIS版本?请查看该类。服务名称仍将硬编码,但更改名称的可能性相对较低 您还可以使用netstat-ab查找端口80上运行的是什么。查看该类,尤其是方法 这将告诉您是否由ASP.NET托管,这将告诉您是否由ASP.NET托管 严格来说,它不会告诉你你是在

我的C#代码可能在IIS(目前为7.5,但我不希望依赖于特定版本)或其他版本下的MVC3应用程序中运行

似乎有一种方法可以知道代码在IIS下运行,但这种方法取决于硬编码文件名字符串

是否有一些编程方法可以检测我的代码是否在IIS下运行,而不取决于IIS版本?

请查看该类。服务名称仍将硬编码,但更改名称的可能性相对较低

您还可以使用
netstat-ab
查找端口80上运行的是什么。

查看该类,尤其是方法

这将告诉您是否由ASP.NET托管,这将告诉您是否由ASP.NET托管

严格来说,它不会告诉你你是在IIS下运行的,但我认为这实际上更好地满足了你的需求

示例代码:

// Returns the file-system path for a given path.
public static string GetMappedPath(string path)
{
    if (HostingEnvironment.IsHosted)
    {
        if (!Path.IsPathRooted(path))
        {
            // We are about to call MapPath, so need to ensure that 
            // we do not pass an absolute path.
            // 
            // We use HostingEnvironment.MapPath, rather than 
            // Server.MapPath, to allow this method to be used
            // in application startup. Server.MapPath calls 
            // HostingEnvironment.MapPath internally.
            return HostingEnvironment.MapPath(path);
        }
        else {
            return path;
        }
    }
    else 
    {
        throw new ApplicationException (
                "I'm not in an ASP.NET hosted environment :-(");
    }
}

仅仅因为IIS在端口80上运行并不意味着他的应用程序被托管在IIS上。反之亦然——IIS可以在任何其他端口(如8080)上运行。这就是为什么建议使用ServiceController类。ServiceController所能做的只是告诉您IIS服务是否正在运行,而不是当前代码是否正在该IIS中运行。