为什么Powershell New-WebBinding命令行开关会创建不正确的主机头?

时间:2012-02-24 02:03:18

标签: iis powershell msmq

我正在尝试为我的IIS网站添加MSMQ绑定,正确的绑定应如下所示:

enter image description here

所以我在PowerShell中执行以下行:

New-WebBinding -Name "My Site"  -Protocol net.msmq -HostHeader "localhost"

并创建以下绑定:

enter image description here

前缀为*:80:,因此我的MSMQ消息不会被WCF服务接收。也许我做错了?如何使用此PowerShell comandlet创建一个绑定信息设置为“localhost”的绑定?

可以找到命令行管理程序codumentaiton here

3 个答案:

答案 0 :(得分:6)

查看cmdlet的反编译代码,看起来像在绑定中添加IPAddress和Port信息,并且没有解决方法。

代码中的相关部分:

private string ipAddress = "*";
...
builder.Append(this.ipAddress);
...
builder.Append(":" + this.sitePort.ToString(CultureInfo.InvariantCulture) + ":");

但是您可以执行cmdlet实际执行的操作(在cmdlet中的代码下方):

new-itemproperty -path "IIS:\sites\test" -name bindings -value @{protocol="net.msmq"; bindingInformation="localhost"}

答案 1 :(得分:2)

尝试一下:

New-ItemProperty "IIS:\sites\NameOfYourSite" -name bindings -value @{protocol="net.msmq";bindingInformation="localhost"}

答案 2 :(得分:0)

如果您正在运行 PowerShell (Core),也就是 PowerShell >v7.1.x,您会发现自己遇到麻烦,因为...

WARNING: Module WebAdministration is loaded in Windows PowerShell using WinPSCompatSession remoting session;
please note that all input and output of commands from this module will be deserialized objects.
If you want to load this module into PowerShell please use 'Import-Module -SkipEditionCheck' syntax.

无法通过远程会话使用 IIS 提供程序。

最简单的技巧是通过管道将字符串重定向到 Windows PowerShell。

"Import-Module WebAdministration;New-ItemProperty -Path `"IIS:\Sites\$($configuration.Website.Name)`" -Name Bindings -value @{protocol = `"net.msmq`"; bindingInformation = `"localhost`" }" | PowerShell

在本例中,网站名称是从配置 JSON 中读取的。您可以将其替换为硬编码的站点名称。