0

我在我的机器上测试这个应用程序时创建了一个小型 wcf 应用程序,然后它正在工作,但是当我在同一网络中我家的另一台电脑上运行 wcf 服务器端时,我收到错误 期间未满足远程端安全要求身份验证。尝试增加 ProtectionLevel 和/或 ImpersonationLevel。

我家的两台电脑都在同一个工作组中,他们可以互相访问。我试图找出答案,但人们说这是防火墙问题。所以我在两台电脑上都禁用了防火墙,但仍然遇到问题。这是我的示例代码。请指导我如何在我的家庭网络中的两台电脑上运行这个 wcf 应用程序。谢谢

服务端

namespace WCFSample
{
[ServiceContract]
public interface IService1
{
    [OperationContract]
    string MyName(string name);
}
}

namespace WCFSample
{
public class Service1 : IService1
{
    public string MyName(string name)
    {
        return string.Format("My Name... {0}", name);
    }

}
}

namespace ConsoleApplication1
{
class Program
{
    static ServiceHost customerHost = null;

    static void Main(string[] args)
    {
        try
        {
            HostCustomerService();

            Console.WriteLine();
            Console.WriteLine("Press any key to stop the services.");
            Console.ReadKey();
        }

            catch (Exception ex)
        {
            Console.WriteLine(ex.Message);    
        }
        finally
        {
            customerHost.Close();
        }

    }

    private static void HostCustomerService()
    {
        customerHost = new ServiceHost(typeof
            (Service1));

        ServiceEndpoint tcpEndpoint = customerHost.AddServiceEndpoint(
            typeof(IService1), new NetTcpBinding(),
            "net.tcp://192.168.1.103:9020/Service1");

        customerHost.Open();

        Console.WriteLine("{0} {1}", tcpEndpoint.Address, tcpEndpoint.Name);
        Console.WriteLine();

    }
   }
  }

客户端

namespace Client1
{
class Program
{
    static void Main(string[] args)
    {
        IService1 channel = null;

        var endPoint = new EndpointAddress(
             "net.tcp://192.168.1.103:9020/Service1");
       channel  = ChannelFactory<IService1>.CreateChannel(new NetTcpBinding(), endPoint);
       Console.WriteLine("Enter Name");
       string line = Console.ReadLine();
       Console.WriteLine(channel.MyName(line));
       Console.ReadKey();
    }

 }
 }
4

1 回答 1

0

我认为默认情况下,NetTcpBinding 需要一个安全通道。

当您创建绑定时(在客户端和服务器上),而不是:

new NetTcpBinding()

尝试:

new NetTcpBinding(SecurityMode.None)

于 2012-10-28T18:33:27.280 回答