gpt4 book ai didi

c# - 无法使用 powershell 远程启动 WCFapplication (System.ServiceModel)

转载 作者:行者123 更新时间:2023-11-30 13:06:15 25 4
gpt4 key购买 nike

我有一个使用 System.ServiceModel.dll 的 C# 应用程序。我可以在本地运行该应用程序,但是当我尝试使用 Power Shell 远程运行它时,它会挂起:

这是重现问题的简单代码:

    using System;
using System.ServiceModel;
using System.ServiceModel.Discovery;

namespace PowerShellSecurity
{
class Program
{
static void Main(string[] args)
{
var serviceUri = "net.pipe://localhost/Foo/Bar";
var discoveryUri = new Uri("soap.udp://239.255.255.250:3702/");

var service = new MyService();

var serviceHost = new ServiceHost(service, new Uri(serviceUri));
serviceHost.Description.Behaviors.Add(new ServiceDiscoveryBehavior());
serviceHost.AddServiceEndpoint(new UdpDiscoveryEndpoint(discoveryUri));
serviceHost.AddServiceEndpoint(typeof(IMyService), new NetNamedPipeBinding(), serviceUri);

serviceHost.Open();

Console.WriteLine("It worked!");
}
}

[ServiceContract]
public interface IMyService
{
[OperationContract]
void DoStuff();
}

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
public class MyService : IMyService
{
public void DoStuff()
{
throw new NotImplementedException();
}
}
}

我可以在本地主机上运行它并且它可以工作。但是,如果我从另一台主机运行以下 powershell 命令:

icm -ComputerName myHost -ScriptBlock {iex "& 'c:\Users\me\Documents\Visual Studio 2013\Projects\PowerShellSecurity\PowerShellSecurity\bin\Debug\PowerShellSecurity.exe'"}

我可以使用 procexp 看到进程卡在 myHost 上。

然后我使用 visual studio 附加到这个进程,我可以看到它卡在了: serviceHost.Open();

如果我必须使用 power shell 远程运行应用程序,我该如何解决这个问题?

非常感谢!

最佳答案

如果我没记错的话,命名管道对于单台计算机来说是本地的。据我所知,您不能使用命名管道“远程”连接。

在这种情况下,我建议使用不同的绑定(bind)(协议(protocol))。例如,您可以使用 http/https、nettcp 或 WSHttp。

关于c# - 无法使用 powershell 远程启动 WCFapplication (System.ServiceModel),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31840835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com