标签: servermanager

如何在IIS服务器管理器中访问请求监视器?

我刚在"服务器管理器"中安装了"请求监视器"角色,

请求监视器

希望我能看到所有的HTTP请求进来并出去.现在我如何访问此工具?我以前从未使用过这个软件,但我似乎无法找到它.

iis logging http servermanager

35
推荐指数
2
解决办法
4万
查看次数

ServerManager构造函数在测试环境中崩溃

我正在MVC 4中构建一个控件应用程序,并遇到了一个非常烦人的问题.当我在本地调试项目时它工作正常.但是,当我将项目部署到测试服务器(Windows Server 2008 R2)时,以下换行符:

ServerManager manager = new ServerManager("%windir%\\system32\\inetsrv\\config\\applicationhost.config");
Run Code Online (Sandbox Code Playgroud)

很感谢任何形式的帮助!

堆栈跟踪:

[ArgumentNullException: Value cannot be null.
Parameter name: type]
   System.Activator.CreateInstance(Type type, Boolean nonPublic) +14156918
   System.Activator.CreateInstance(Type type) +11
   Microsoft.Web.Administration.ConfigurationManager..cctor() +96

[TypeInitializationException: The type initializer for 'Microsoft.Web.Administration.ConfigurationManager' threw an exception.]
   Microsoft.Web.Administration.ServerManager..ctor(String applicationHostConfigurationPath) +51
   ..HomeController.ApplicationPools() in ..HomeController.cs:26
   lambda_method(Closure , ControllerBase , Object[] ) +79
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary 2 parameters) +261
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +39
   System.Web.Mvc.Async.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41() +34
   System.Web.Mvc.Async.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() +124
   System.Web.Mvc.Async.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() +837307
   System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) +15
   System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20() +33
   System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +837892
   System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult …
Run Code Online (Sandbox Code Playgroud)

iis servermanager asp.net-mvc-4

10
推荐指数
1
解决办法
3372
查看次数

如何使用IIS 7 API将HttpError ConfigurationElement恢复为"Inherited"

假设我有以下<httpErrors>集合web.config:

<httpErrors>
</httpErrors>
Run Code Online (Sandbox Code Playgroud)

是的,很好'空.

在IIS 7中,我的HTTP错误页面如下所示:

httpErrors

美丽!(我突然强调了404,因为这是我将在一秒内使用的例子).

现在,我运行以下代码:

errorElement["statusCode"] = 404;
errorElement["subStatusCode"] = -1;
errorElement["path"] = "/404.html";
httpErrorsCollection.Add(errorElement);
Run Code Online (Sandbox Code Playgroud)

可爱.我现在按照预期在我的web.config:

<httpErrors>
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" subStatusCode="-1" prefixLanguageFilePath="" path="/404.html" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)

不能更快乐.现在,在IIS 7中,我的HTTP错误部分看起来像预期的那样,如下所示: 替代文字

在这一点上,生活不能更甜蜜.现在,在线下,我想以编程方式将我的404错误恢复到原始屏幕截图中显示的状态.逻辑规定我应该remove犯我的新错误:

httpErrorsCollection.Remove(errorElement);
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做,我web.config看起来很像这样:

    <httpErrors>
        <remove statusCode="404" subStatusCode="-1" />
    </httpErrors>
Run Code Online (Sandbox Code Playgroud)

我的IIS看起来有点像这样:

替代文字

这是因为我的web.config- 但是如何,使用ServerManager和所有它有用的IIS 7 API,我是否httpError完全删除元素并将其恢复web.config为:

<httpErrors>
</httpErrors>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

.net iis-7 configurationelement servermanager

9
推荐指数
2
解决办法
1万
查看次数

使用ServerManager类配置IIS身份验证设置

我正在使用ServerManager类(来自Microsoft.Web.Administration)在运行IIS 7的服务器上创建应用程序.我想配置应用程序是否在应用程序基础上使用匿名身份验证或Windows身份验证,因此我不能简单地要求IT更改根站点上的设置.该应用程序的内容属于第三方,因此我不允许更改应用程序内的web.config文件.

Application类没有公开任何有用的属性,但也许我可以使用ServerManager的GetApplicationHostConfiguration方法完成某些事情?

.net c# iis-7 servermanager

7
推荐指数
1
解决办法
6495
查看次数

如何从IIS通过C#获取网站名称?

在IIS管理器中,默认网站绑定在端口80上.如何使用c#按网站名称获取端口?我尝试了以下代码:

var lWebsite = "Default Web Site";
var lServerManager = new ServerManager();
var lPort = lServerManager.Sites[lWebsite].Bindings.GetAttributeValue("Port");
Run Code Online (Sandbox Code Playgroud)

lPort结果为null,但有invalid index异常.但是赋值变量lPort = lServerManager.Sites[lWebsite]有效.

c# port servermanager web

7
推荐指数
1
解决办法
3538
查看次数

以编程方式从IIS获取站点状态,返回COM错误

我试图以编程方式从IIS获取我的站点状态,看看它是否已停止,但我一直收到以下错误,

对象标识符不代表有效对象.(HRESULT异常:0x800710D8)

该应用程序使用ServerManager Site类来访问站点状态.这是代码,

//This is fine, gets back the site 
var serverManager = new Microsoft.Web.Administration.ServerManager(ConfigPath);
var site = serverManager.Sites.FirstOrDefault(x => x.Id == 5);
if (site == null) return;
var appPoolName = site.Applications["/"].ApplicationPoolName;
//error!
var state = site.State;
Run Code Online (Sandbox Code Playgroud)

我已经使用静态站点进行测试以隔离问题,确保站点已启动并运行,所有配置都有效,指向有效的应用程序池...等.

如果您需要更多详细信息,请告诉我们.这是COM的事吗?

c# iis configuration iis-7 servermanager

5
推荐指数
1
解决办法
2878
查看次数

在远程机器 C# 上向 IIS7 添加网站

我目前有一个用C#编写的应用程序,它在当前机器上的IIS7中添加了一个网站,并且运行良好,代码如下

 var iisManager = new ServerManager();       

 var sites = iisManager.Sites;

 var site = sites.Add("WebsiteName", "C:\Website", 80);

 var application = site.Applications[0];

 application.ApplicationPoolName = appPool;

 iisManager.CommitChanges();
Run Code Online (Sandbox Code Playgroud)

我必须创建此代码的一个版本,以便将网站添加到位于同一网络上的远程计算机上的 IIS。该代码如下。

 var iisManager= ServerManager.OpenRemote("machineName"); //I've also tried machines IP 

 var sites = iisManager.Sites["Default Web Site"];

 var site =  Sites.Applications.Add("WebsiteName", "C:\Website", 80);

 site.ApplicationPoolName = appPool;

 iisManager.CommitChanges();
Run Code Online (Sandbox Code Playgroud)

当 machineName 是执行代码的机器时,它会将网站添加到 IIS。但是,当 machineName 是远程机器时,我收到以下异常

由于以下错误,从“远程机器名称”检索具有 CLSID {2B72138B-3F5E-4502-8052-803546CE3364} 的远程组件的 COM 类工厂失败:80070005“远程机器”

执行时出现异常

var iisManager= ServerManager.OpenRemote("machineName");
Run Code Online (Sandbox Code Playgroud)

在执行上述代码之前,我使用模拟来模拟管理员。我可以远程访问机器,甚至可以使用 C# 代码在机器上创建文件。

我认为远程机器上的权限存在问题,或者可能是因为它是虚拟机,我真的不确定。

代码 80070005 相当通用,表示访问受限,但我不明白为什么要冒充管理员。

我在 Windows 7 sp1 x64 机器上执行代码,远程 VM …

c# iis-7 remote-server windows-server-2008-r2 servermanager

5
推荐指数
1
解决办法
2450
查看次数

如何确定服务器上是否已安装"Active Directory域服务"角色

我试图弄清楚Active Directory域服务是否安装了Windows服务器.

我知道它们出现在服务器管理器中,但是如果角色安装在使用C#代码的服务器上,我可以通过编程方式获取

c# roles servermanager

5
推荐指数
1
解决办法
968
查看次数

ServerManager,创建应用程序池,未设置身份

我正在尝试使用该类创建应用程序池ServerManager。这是我的代码:

using (ServerManager serverManager = new ServerManager())  {
   if (!serverManager.ApplicationPools.Any(p => p.Name == poolName))  {
     ApplicationPool newPool = serverManager.ApplicationPools.Add(poolName);
     newPool.ManagedRuntimeVersion = "v4.0";
     newPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
     newPool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser;
     newPool.ProcessModel.UserName = user;
     newPool.ProcessModel.Password = pass;
     serverManager.CommitChanges();
   }
}
Run Code Online (Sandbox Code Playgroud)

应用程序池已创建,但未为其设置标识 - IIS 管理器中的应用程序池表中的标识列为空。我究竟做错了什么?

用户采用域\用户名的形式,并且传递的凭据是正确的(代码的另一部分检查这些凭据)。

c# application-pool servermanager

5
推荐指数
1
解决办法
1608
查看次数

以编程方式在IIS 8上使用SNI选项添加绑定

我正在尝试使用Microsoft.Web.Administration库(.NET Framework)为IIS 8创建绑定标志SNI(服务器名称指示).

这对我来说是必要的,因为我希望在IIS下为同一个网站获得多个SSL绑定,所有这些只使用一个IP地址.这是IIS 8的主要新功能之一.

我一直在研究Binding类,我找不到任何标志或选项来表明它.

目前的Microsoft.Web.Administration v 7.0.0.0是否可以实现?我需要一个我没找到的新版本吗?

我知道版本7.9.0.0仅适用于IIS express,而不是我的场景,所以我没有调查过它.

.net servermanager sni iis-8

4
推荐指数
1
解决办法
1541
查看次数