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>
您可以发布此问题中使用的合同定义吗? – carlosfigueira 2011-06-02 20:42:28
是的,请分享您的数据合同。 – 2011-06-02 20:47:23
我不想提供数据合同,因为这涉及到显示我的客户/公司的身份,我不觉得这样做很舒服。 – burnt1ce 2011-06-03 14:49:05