WCF 安全性 之 Windows

案例下载

http://download.csdn.net/detail/woxpp/4113172

服务端配置代码

复制代码
  <system.serviceModel>
    <services>
      <service name="WcfServiceLibrary.ServiceTcp">
        <endpoint address="net.tcp://localhost:8731/WcfServiceLibrary"
          binding="netTcpBinding" bindingConfiguration="testnetTcpBinding"
          contract="WcfServiceLibrary.IService1">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8732/WcfServiceLibrary" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- 为避免泄漏元数据信息,
          请在部署前将以下值设置为 false 并删除上面的元数据终结点  -->
          <serviceMetadata httpGetEnabled="True"/>
          <!-- 要接收故障异常详细信息以进行调试,
          请将以下值设置为 true。在部署前设置为 false 
            以避免泄漏异常信息-->
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <netTcpBinding>
        <binding name="testnetTcpBinding">
          <security mode="Message">
            <transport clientCredentialType="None" protectionLevel="None"></transport>
            <message clientCredentialType="Windows"/>
          </security>
        </binding>
      </netTcpBinding>
    </bindings>
  </system.serviceModel>
复制代码

客户端调用代码 通过代理类

http://www.cnblogs.com/woxpp/p/6232298.html

客户端代码

复制代码
    //获取域名
            String hostName = Dns.GetHostName();
            IPHostEntry ipH = new IPHostEntry();
            ipH = Dns.Resolve(hostName); 
            NetTcpBinding netTcp = new NetTcpBinding();
            netTcp.Security.Mode = SecurityMode.Message;
            netTcp.Security.Transport.ProtectionLevel = ProtectionLevel.None;
            netTcp.Security.Transport.ClientCredentialType = TcpClientCredentialType.None;
            netTcp.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
            ChannelFactory<IService1> factory = new ChannelFactory<IService1>(netTcp);
            factory.Credentials.Windows.ClientCredential.UserName = "panpan.xu";
            factory.Credentials.Windows.ClientCredential.Password = "123.xpp";
            factory.Credentials.Windows.ClientCredential.Domain = "panpanxu-PC";
            IService1 proxy = factory.CreateChannel(new EndpointAddress("net.tcp://localhost:8731/WcfServiceLibrary"));
            txtMessage.Text = proxy.GetDataUsingDataContract(new WcfServiceLibrary.CompositeType() { StringValue = "sssss" }).StringValue;
  
复制代码

 

posted @   释迦苦僧  阅读(731)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示