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

希望我能看到所有的HTTP请求进来并出去.现在我如何访问此工具?我以前从未使用过这个软件,但我似乎无法找到它.
我正在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) 假设我有以下<httpErrors>集合web.config:
<httpErrors>
</httpErrors>
Run Code Online (Sandbox Code Playgroud)
是的,很好'空.
在IIS 7中,我的HTTP错误页面如下所示:

美丽!(我突然强调了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)
有任何想法吗?
我正在使用ServerManager类(来自Microsoft.Web.Administration)在运行IIS 7的服务器上创建应用程序.我想配置应用程序是否在应用程序基础上使用匿名身份验证或Windows身份验证,因此我不能简单地要求IT更改根站点上的设置.该应用程序的内容属于第三方,因此我不允许更改应用程序内的web.config文件.
Application类没有公开任何有用的属性,但也许我可以使用ServerManager的GetApplicationHostConfiguration方法完成某些事情?
在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]有效.
我试图以编程方式从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#编写的应用程序,它在当前机器上的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 …
我试图弄清楚Active Directory域服务是否安装了Windows服务器.
我知道它们出现在服务器管理器中,但是如果角色安装在使用C#代码的服务器上,我可以通过编程方式获取
我正在尝试使用该类创建应用程序池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 管理器中的应用程序池表中的标识列为空。我究竟做错了什么?
用户采用域\用户名的形式,并且传递的凭据是正确的(代码的另一部分检查这些凭据)。
我正在尝试使用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,而不是我的场景,所以我没有调查过它.