WSDL接口数据传递以及外网发布需要注意的地方

A系统传递数据给B系统

1、A创建asmx推送接口如下

using System;
using System.Collection.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using  Topevery.DUM.Report;
using Topevery.DUM.Report.Entity;
namespace Topevery.DUM.Report.ASMX
{
 ///<summary>
///PreEventFive的摘要说明
///</summary>
[WebService(Namespace="http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class PreEventFive:System.Web.Services.WebService
{
    [WebMethod(Description="直接返回json")]
      public string GetPETable()
{
        DateTime now=DateTime.Now;
        DateTime d1=new DateTime(now.Year,now.Month,1);
        DateTime d2=DateTime.Now;
        DataTable dt=Broker.GetStatisTypeTop10(d1,d2,1,"2").Tables[0];
         int i=1;
         EventDataList DataSource =new EventDataList();
         List<Dictionary<string,object>>list =new List<Dictionary<string,object>>();
foreach(DataRow dr in dt.Rows)
{
     if(i<6)
{
      DataSource.SerialNumber.Add(i.ToString());
      DataSource.Name.Add(dr["C_Name"].ToString());
      DataSource.LNNUM.Add(dr["C_LA_NUM"].ToString());
}
i++;
}
//数组序列化转为json
     string jsonData2Tran =Newtonsoft.Json.JsonConvert.SerializeObject(DataSource);
     return jsonData2Tran;
}
}
}

2、B引用A接口,接受该服务数据

JNEvent.PreEventFive ef=new JNEvent.PreEventFive();
   string pe=ef.GetPETable();
   PreEventFive evt=Newtonsoft.Json.JsonConvert.DeserializeObject<PreEventFive>(pe);

3、发布需要注意的是右击B接口,修改属性-web引用url,将localhost改为外网IP

4、发布后需要在该站点下<system.web>中间配置如下信息,开启远程访问

<webServices>
     <protocols>
         <add name="HttpSoap"/>
         <add name="HttpPost"/>
         <add name="HttpGet"/>
        <add name="Documentation"/>
      </protocols>
 </webServices>

 

posted @ 2018-01-15 09:56  维尼熊320  阅读(949)  评论(0编辑  收藏  举报