实现网络通信时可以使用“WCF”。实现过程:
    通过“asp.net站点”将“WCF”服务发布出去,然后被“客户端”调用,就可以实现网络通信那岂不是,如果别人知道“WCF”服务的地址,也可以使用了???调用其中的方法,然后就可以修改服务器上的数据了。这样“WCF”岂不是存在安全隐患?比如,使用WCF向“Silverlight”客户端公布数据。

解决方案 »

  1.   

    WebService ,asmx岂不是也一样?
      

  2.   

    可以在数据库加一个字段存放分配给客户的密钥,每次调用WCF方法必须提交一个密钥,合法即可访问,不合法即拒绝返回数据。
      

  3.   

    WCF 安全模型十分强大Windows认证,用户/密码, X509证书... 建议看看msdn。http://msdn.microsoft.com/zh-cn/library/ms731925.aspx
      

  4.   

    其它方法也有,有个特殊点的,通过SOAP头来传递验证信息,先通过登录方法,验证身份通过后,传递给用户一个当前有效的会话ID,然后用户本地缓存,添加到SOAP头,每次发送任何请求都附带这个SOAP头的信息,这样服务端检验SOAP头部是否是有效的会话ID就可以验证身份了。
      

  5.   


    在“asp.net”下用“Session”可以么?怎样加到“SOAP”头呢,谢谢了。
      

  6.   

    可以,这个SOAP头信息是在客户端添加的,当然,如果客户端直接用IE访问,肯定是没法添加了,必须用.NET程序来添加(其它语言的程序是否可以不知道,反正符合SOAP规范定义的)。
    下面提供一种实现方式:
        public class ContextHeader : IClientMessageInspector
        {
            public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
            {        }        public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel)
            {
                MessageHeader clientHeader = MessageHeader.CreateHeader("LoginID", string.Empty, DataManager.loginid);           
                request.Headers.Add(clientHeader);            return null;
            }
        }
    代码方式添加如下,配置文件添加方式则是添加到Endpoint的Behaviors节点。channelFactory = new ChannelFactory<IServer>(binding, address);
    channelFactory.Endpoint.Behaviors.Add(new ContextHeaderBehavior());
    channel = channelFactory.CreateChannel();
      

  7.   

    http://blog.csdn.net/fangxinggood/article/details/6144893
      

  8.   


    用证书???Silverlight可以取“asp.net”下的“Session”吗?