我正在尝试为我的IIS网站添加MSMQ绑定,正确的绑定应如下所示:
所以我在PowerShell中执行以下行:
New-WebBinding -Name "My Site" -Protocol net.msmq -HostHeader "localhost"
并创建以下绑定:
前缀为*:80:
,因此我的MSMQ消息不会被WCF服务接收。也许我做错了?如何使用此PowerShell comandlet创建一个绑定信息设置为“localhost”的绑定?
可以找到命令行管理程序codumentaiton here。
答案 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 中读取的。您可以将其替换为硬编码的站点名称。