WCF应用程序无法在我的家庭网络中运行

时间:2012-10-28 18:25:25

标签: wcf

当我在我的机器上测试这个应用程序然后它正在工作但是当我在我家中的另一台PC上运行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();
    }

 }
 }

1 个答案:

答案 0 :(得分:0)

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

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

new NetTcpBinding()

尝试:

new NetTcpBinding(SecurityMode.None)