问题标签 [web-administration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
24 浏览

c# - 在站点应用程序列表中获取已删除的应用程序

我在 IIS 默认站点下获取已删除和当前站点的列表。下面是我的代码。

在 applst 中,我正在获取已删除和当前应用程序的列表。我无法理解为什么会发生这种情况。IIS 是否还缓存已删除的应用程序。

0 投票
1 回答
161 浏览

c# - 为 asp.net 运行 Web 管理工具时出错

我想运行 Web 管理工具来为不同的用户设置角色。我使用以下命令从 cmd 运行 IIS Express:

运行命令后 IIS 开始正常工作。

接下来,我想打开web administration tool,所以我在 URL 中输入了这个,

但是,我得到了这个编译错误,

经过一番搜索,我发现StringUtil在它自己的文件中无法访问。所以我完全遵循了这里提供的解决方案, CS0122: 'System.Configuration.StringUtil' is inaccessible due to its protection level(我尝试了第一个和第三个答案)。

但是,我仍然得到相同的编译错误,它指向我已经评论过的行号( 989 ),并替换为上面提供的答案链接中建议的字符串值。

似乎编译器仍然看到旧版本WebAdminPage.cs,虽然我已经更新它,保存它(为了保存更改,我以管理员身份运行它),甚至按照第一个答案的建议卸载了项目,但编译器仍然看到旧版本。

谁能告诉我如何解决这个问题?

谢谢。

0 投票
0 回答
750 浏览

powershell - Powershell WebAdminstration New-Item:长度不能为零

我正在尝试使用以下 PowerShell 脚本,但Length cannot be zero出现错误:

完整的错误消息如下:

我无法找出它抱怨的参数。New-Item没有参数Length...任何提示?

0 投票
2 回答
1896 浏览

powershell - 特定的 PowerShell 模块未自动加载

我在 Windows Server 2012 R2 上使用 PowerShell 4。

调用来自该模块的 Cmdlet 时,特定模块 WebAdministration 不会自动加载。我尝试成功自动加载的所有其他模块。我可以使用 Import-Module 手动加载此模块,它的行为符合预期。

  • PSModulePath 环境变量包含模块的路径。此路径中的其他模块会自动加载。
  • 该模块不是自定义的。它是一个内置的 IIS 功能。该功能已启用。
  • 自动加载已启用。$PSModuleAutoLoadingPreference 设置为“全部”
  • Get-Command "Get-WebBinding" 不起作用,但 Get-Command | {$_.Name -eq "Get-WebBinding"} 在哪里。
  • 获取模块-ListAvailable | 其中 { $_.Name -eq "WebAdministration"} 返回具有正确路径的模块。

PSModulePath = %SystemRoot%\system32\WindowsPowerShell\v1.0\Modules\ WebAdministration 模块路径= C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration



简单测试的输出


PS C:\Users\Administrator> $PSModuleAutoLoadingPreference = "All"

PS C:\Users\Administrator> Get-WebBinding Get-WebBinding:术语“Get-WebBinding”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。在 line:1 char:1 + Get-WebBinding + ~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Get-WebBinding:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Users\Administrator> Import-Module WebAdministration

PS C:\Users\Administrator> Get-WebBinding

协议绑定信息 sslFlags -------- ------ -------- http *:8082: 0 http *:8081: 0




任何关于为什么自动加载不起作用的建议将不胜感激。谢谢!

0 投票
2 回答
2797 浏览

windows - 如何使用 PowerShell cmdlet 配置 32 位 IIS 网站或应用程序

我正在尝试更改 ASP.NET 临时文件的位置,以便在发布新版本期间清理它们。

因为很难找到特定网站的 ASP.NET 临时文件的位置,所以在这些C:\Windows\Microsoft.NET\Framework C:\Windows\Microsoft.NET\Framework64位置下应用虚拟目录我决定将文件移动到磁盘上的特定位置会更容易,然后可以清洁。

您可以通过修改配置部分中的tempDirectory属性来完成此操作。system.web/compilation

我们的服务器构建和发布过程是自动化的,因此将代码添加到配置和发布脚本中看起来很简单。

然而,在测试过程中,我发现 32 位应用程序的位置并没有改变。

我正在使用的代码是:

此代码正常工作,并将条目写入根 web.config 文件中:C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\web.config

例如

请注意,如果没有 -Clr v2.0 参数,该值将写入 CLR 4.0 配置文件的C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config.

您还可以在 IIS 配置编辑器中看到该条目:IIS 配置编辑器显示指定的临时路径

问题是应用程序池设置为“启用 32 位应用程序”,因此该属性被忽略。

如果我手动将上面显示的位置元素C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\web.configC:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config

更改有效,并且确实 ASP.NET 临时文件移动到了网站编译时指定的这个位置。

问题不在于 ASP.NET 临时文件,而是一个更普遍的问题,即您打算如何在 PowerShell 或 IIS 中配置 32 位应用程序?似乎没有办法做到这一点,我觉得这很不可思议。仍有大量 32 位应用程序需要配置。

另请注意,我选择使用根 web.config 来存储此值是有充分理由的:

  1. ApplicationHost.config无法存储system.web配置
  2. 临时文件的位置在设计时是未知的,由托管服务器配置决定。因此,无法在web.config应用程序本身的文件中指定此设置。

感谢您对这个问题的任何启发。

0 投票
1 回答
195 浏览

c# - 从 MVC 调用的 Ps WebAdministration 仅返回有关当前网站的信息

我想要一些简单的东西:列出所有网站(现在只在我自己的 IIS7 上,但稍后在 serverfarm 上)。我想使用 powershell-4 命令,例如 Get-WebBinding 或 Get-Website,因为 pShell 很容易在其他服务器上远程执行。

我想从 Intranet 网页触发 pShell,以显示每个服务器场主机的实时域绑定概述。


该脚本在 Powershell 窗口本身中工作正常,从 C# -WIN 形式调用它也可以工作,但从网页(MVC5)调用它只返回页面所在的站点,而不是所有站点.. 发生了什么?

我使用 URL“ http://localwebsite/getsites ”直接从浏览器调用它。

C#代码:

0 投票
0 回答
982 浏览

powershell - Powershell WebAdministration 模块 Restart-WebAppPool 失败

具体问题:

我正在使用可验证存在的 Web 应用程序池的名称调用 Restart-WebAppPool。当我在脚本的上下文中执行该命令时,它会出现错误Cannot find path 'IIS:\AppPools\AppPoolName' because it does not exist.。当我在 powershell 控制台中执行完全相同的命令时,它运行起来就像一个魅力。

语境:

我在脚本开头使用Import-Module WebAdministration. 我在脚本中的许多地方都依赖该模块中的其他命令,所有这些命令都成功运行。我在调用命令之前将尝试重新启动的应用程序池的名称记录到日志文件中,并且该名称是正确的,并且在错误消息中是正确的。我正在检索应用程序池名称,(Get-ItemProperty -Path $SitePath).ApplicationPool其中 $SitePath 在整个脚本中用于在相关站点上进行操作。

更烦人的是,在尝试重新启动应用程序池之前,我使用 将相关应用程序的根目录重置为新的物理路径(Set-ItemProperty -Path $SitePath -Name "PhysicalPath" -Value $fullAppPath ),该路径运行良好,所以我知道 WebAdministration 已加载(无法找到的最明显原因我知道的应用程序池的路径)。

我尝试重新启动的应用程序池名称(除了在 powershell 命令提示符下重新启动)显示在Get-ChildItem -Path "IIS:\AppPools"

我还缺少什么会导致 WebAdministration 无法找到该应用程序池?

0 投票
3 回答
5679 浏览

powershell - 为什么 Set-ItemProperty 对 Windows 10 下的 IIS 应用程序无效?

我们的大多数 Web 应用程序都包含一个 Deploy.ps1 Powershell 脚本。Octopus Deploy 使用它在生产部署期间配置应用程序,但我们也使用它来设置开发人员的本地 IIS 设置。在 Windows 7、Windows 8.1 和我们所有的 Win2012 生产服务器上运行良好。

它不适用于 Windows 10,这似乎是因为Set-ItemPropertycmdlet 无效。没有错误消息或任何东西,它只是不做任何事情。

IIS 站点 api.example.com 已经存在,我们正在使用 Powershell 创建 /myapp 应用程序,然后将应用程序的物理路径更改为 D:\Projects\Demo

在 Windows 7 上运行完全相同的命令集,您将获得相同的输出,但在最后一步,PhysicalPath 属性已按预期更改:

知道发生了什么吗?IIS10 是否有一些新的管理员限制?我需要某种额外提升的权限来修改现有 Web 应用程序的设置或其他什么?

更新:如果项目是 IIS 站点,它似乎工作正常,但如果项目是 Web 应用程序则失败,这让我想知道这是否只是提供程序中的错误。有任何想法吗?

0 投票
0 回答
353 浏览

powershell - WebAdministration 模块不公开其 cmdlet

给定 MS Server 2008 r2,IIS 7.0 升级到 7.5 Powershell 2.0 升级到 3.0

执行命令import-module WebAdministration 它完成没有错误。然后调用get-command -module WebAdministration 它发现模块只暴露了两个命令:

CommandType 名称
----------- ----
别名 Begin-WebCommitDelay
别名 End-WebCommitDelay

所以没有任何其他方法Get-WebSite,例如。

为什么 powershell 看不到必须包含在 WebAdministration 中的所有可用 cmdlet?

我有我的开发 Win7 机器,一切正常。可以访问我需要的所有东西。

正如评论中建议的那样,UPD 为您提供了带debug开关的导入运行的输出:

UPD2:似乎与Powershell版本相关的问题,即3.0。当我使用-version 2WebAdmininstration 的 cmdlet 运行 powershell 时,它可以正常工作。但是为什么 3.0 错过了 WebAdministration 的命令,这是个问题。

0 投票
1 回答
5746 浏览

powershell - 使用 passthru 确保 cmdlet 已完成

我很困惑如何-Passthru工作。

据我了解,该-Passthru参数用于将 cmdlet 的结果传递给管道,即使 cmdlet 本身不会产生任何结果。

我尝试先编写这些代码:(我正在尝试在不使用Restart-WebAppPoolcmdlet 的情况下回收 IIS 应用程序池)

正如我所料,停止 IIS 应用程序池需要时间,并且由于 PowerShell 不等待 cmdlet 完成其工作,因此Stop-WebAppPool停止应用程序池并返回。由于应用程序池尚未准备好启动,因此Start-WebAppPool会调用 并引发错误。

所以我把我的代码改成了这些:

它有效,但不是很优雅和灵活。

然后我添加-Passthru到这两个 cmdlet,它变成:

一切正常,没有错误被抛出。

就我而言,我想:

在应用程序池真正停止/启动之前,Stop/Start-WebAppPool cmdlet 不会产生任何结果。由于-Passthru需要将某些内容传递给管道,因此 PowerShell 等待 cmdlet 产生其结果,在这种情况下,应用程序池停止/启动,以执行下一个。

-Passthru我在或上都找不到任何有用的手册Stop-WebAppPool,所以在这种情况下可以这样做吗?