2011-06-02 57 views
1

我已经设置了我的WCF客户端来通过提琴手代理,以便我可以捕获和分析流量。事实证明,我的WCF客户端没有发送我已初始化的所有参数。WCF不发送所有数据

我已经初始化的一些参数没有被发送。其中一个例子,对我来说非常重要的是lineOfBusinessList数组中的lineOfBusiness。

我已经将下面的代码分成了3部分,我的WCF客户端,Fiddler拦截的soap消息以及我希望我的WCF客户端发送的soap消息。

我的WCF客户

class Program 
    { 
     static void Main(string[] args) 
     { 

      GetProductAvailability(); 
     } 

     public static void GetProductAvailability() 
     { 
      ProductAvailabilityResponseType response; 
      using (ProductAvailabilityServicePortTypeClient client = new ProductAvailabilityServicePortTypeClient("ProductAvailabilityServicePortQSPort")) 
      { 
       client.ClientCredentials.UserName.UserName = "username"; 
       client.ClientCredentials.UserName.Password = "password"; 
       ProductAvailabilityRequestType request = new ProductAvailabilityRequestType 
       { 
        requestHeader = GetRequestHeader(), 
        serviceAddress = GetServiceAddress(), 
        responseFilterCriteria = GetFilterCriteria() 
       }; 

       response = client.getProductAvailability(request); 
      } 

      if (response != null) 
      { 

      } 
      //return null; 
     } 

     private static RequestHeaderType GetRequestHeader() 
     { 
      return new RequestHeaderType 
      { 
       customerInteractionType = ChannelType.WebSelfServe, 
       serviceRequestUserId = "55555", //not sure, ask stevenson 
       serviceConsumer = ServiceConsumerToolType.Emily, 
       serviceRequestTimestamp = DateTime.Now, 
       language = LanguageType.English, 
       referenceID = "A24T34H3" //ask stevenson if this is necessary 
      }; 
     } 

     private static ServiceAddressSearchType GetServiceAddress() 
     { 
      return new ServiceAddressSearchType 
      { 
       addressID = "000622060", 
       address = new AddressType 
       { 
        provinceOrState = new ProvinceOrStateType { type = ProvinceOrStateValueType.ON } 
       } 
      }; 
     } 
     private static ProductAvailabilityFilterType GetFilterCriteria() 
     { 
      return new ProductAvailabilityFilterType 
      { 
       serviceSupportInfoOnly = false, 
       customerSegment = CustomerSegmentType.Residential, 
       channelList = new ChannelType[1] { ChannelType.WebSelfServe }, 
       lineOfBusinessList = new LineOfBusinessProductType[1] { 
        new LineOfBusinessProductType{ lineOfBusiness = LineOfBusinessType.Internet } 
       }, 
       oneBillOffers = false, 
       satelliteTechnicianRequired = false, 
      }; 
     } 
    } 

什么实际发送:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Header> 
    <ActivityId CorrelationId="ab64c2a1-7e32-448c-8d64-80fead66e566" xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">cb08f434-ec5e-409e-a550-a0826739aa94</ActivityId> 
    </s:Header> 
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <getProductAvailability xmlns="ca/bell/oms/autotype/productavailability"> 
     <requestHeader> 
     <customerInteractionType xmlns="ca/bell/oms/autotype/omscommonrequest">WebSelfServe</customerInteractionType> 
     <serviceRequestUserId xmlns="ca/bell/oms/autotype/omscommonrequest">55555</serviceRequestUserId> 
     <serviceConsumer xmlns="ca/bell/oms/autotype/omscommonrequest">Emily</serviceConsumer> 
     <serviceRequestTimestamp xmlns="ca/bell/oms/autotype/omscommonrequest">2011-06-02T16:26:13.4639736-04:00</serviceRequestTimestamp> 
     <language xmlns="ca/bell/oms/autotype/omscommonrequest">English</language> 
     <referenceID xmlns="ca/bell/oms/autotype/omscommonrequest">A24T34H3</referenceID> 
     </requestHeader> 
     <serviceAddress> 
     <addressID>000622060</addressID> 
     <address> 
      <provinceOrState xmlns="ca/bell/oms/autotype/omscommon"/> 
     </address> 
     </serviceAddress> 
     <responseFilterCriteria> 
     <serviceSupportInfoOnly>false</serviceSupportInfoOnly> 
     <channelList> 
      <channel>WebSelfServe</channel> 
     </channelList> 
     <lineOfBusinessList> 
      <lineOfBusinessProduct/> 
     </lineOfBusinessList> 
     </responseFilterCriteria> 
    </getProductAvailability> 
    </s:Body> 
</s:Envelope> 

的SOAP讯息支付我期待我的WCF客户端发送:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:prod="ca/bell/oms/autotype/productavailability" xmlns:oms="ca/bell/oms/autotype/omscommonrequest" xmlns:oms1="ca/bell/oms/autotype/omscommon"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <prod:getProductAvailability> 
      <oms:requestHeader> 
       <oms:customerInteractionType xmlns:n2 = "ca/bell/oms/autotype/omscommonrequest">WebSelfServe</oms:customerInteractionType> 
       <oms:serviceRequestUserId xmlns:n3 = "ca/bell/oms/autotype/omscommonrequest">55555</oms:serviceRequestUserId> 
       <oms:serviceConsumer xmlns:n4 = "ca/bell/oms/autotype/omscommonrequest">Emily</oms:serviceConsumer> 
       <oms:serviceRequestTimestamp xmlns:n5 = "ca/bell/oms/autotype/omscommonrequest">2010-11-30T11:27:08.431-05:00</oms:serviceRequestTimestamp> 
       <oms:language xmlns:n6 = "ca/bell/oms/autotype/omscommonrequest">English</oms:language> 
       <oms:referenceID xmlns:n7 = "ca/bell/oms/autotype/omscommonrequest"></oms:referenceID> 
      </oms:requestHeader> 
     <prod:serviceAddress> 
      <prod:addressID>000622060</prod:addressID> 
      <prod:address> 
       <oms1:provinceOrState> 
        <oms1:type>ON</oms1:type> 
       </oms1:provinceOrState> 
      </prod:address> 
     </prod:serviceAddress> 
     <prod:responseFilterCriteria> 
      <prod:serviceSupportInfoOnly>false</prod:serviceSupportInfoOnly> 
      <prod:customerSegment>Residential</prod:customerSegment> 
      <prod:channelList> 
       <prod:channel>WebSelfServe</prod:channel> 
      </prod:channelList> 
      <prod:lineOfBusinessList> 
       <prod:lineOfBusinessProduct> 
        <prod:lineOfBusiness>Internet</prod:lineOfBusiness> 
       </prod:lineOfBusinessProduct> 
      </prod:lineOfBusinessList> 
      <prod:oneBillOffers>false</prod:oneBillOffers> 
     <prod:satelliteTechnicianRequired>false</prod:satelliteTechnicianRequired> 
     </prod:responseFilterCriteria> 
     </prod:getProductAvailability> 
    </soapenv:Body> 
</soapenv:Envelope> 
+0

您可以发布此问题中使用的合同定义吗? – carlosfigueira 2011-06-02 20:42:28

+0

是的,请分享您的数据合同。 – 2011-06-02 20:47:23

+0

我不想提供数据合同,因为这涉及到显示我的客户/公司的身份,我不觉得这样做很舒服。 – burnt1ce 2011-06-03 14:49:05

回答

0

猜测,您在某些DataContract属性中缺少DataMember属性。