我对外部源的服务引用存在一些问题(使用Visual Studio 2015中提供的wsdl添加它)。
情况是我运行的请求似乎达到服务器正常。我似乎也得到了预期的xml格式的响应(添加了TextWriterTraceListener)。但是我在代码中返回的OutType类(在这种情况下,GetBankCertificateOutType)始终为null。
使用公共测试帐户构建的用于说明的控制台应用程序非常简单。它看起来如下:
static void Main(string[] args)
{
//instantiates client from the service reference
var client = new PkiServicePortTypeClient();
var time = DateTime.UtcNow;
Random r = new Random();
string reqId = r.Next(100, 999).ToString();
var outType = client.GetBankCertificate(*full params on github*);
//This line will throw nullexception since outType is always null
//BUT a valid response is actually received (although returning aa application statusCode that represents error at this stage)
var response = outType.GetBankCertificateResponse;
}
我试图找到问题但是没有成功。所以想看看是否有人对如何调试这个或者有一个解决方案有一些好的建议。
我构建了一个完整的,最小的控制台示例项目(包括源wsdl),用于说明位于here的问题。
答案 0 :(得分:2)
我已经下载并检查了您的解决方案,我在trace.log中找到了这个
GetBankCertificateRequest at tribute {http://www.w3.org/XML/1998/namespace}id had invalid value '360817' of type '{http://www .w3.org/2001/XML Schema}ID'
在我使用id
GetBankCertificateRequest
值后,我找回了正确的值(而不是null)。
var outType = client.GetBankCertificate(new GetBankCertificateInType {
RequestHeader = new RequestHeaderType {
SenderId = "360817",
CustomerId = "360817",
RequestId = reqId,
Environment = EnvironmentType.test,
EnvironmentSpecified = true,
InterfaceVersion = "1",
Timestamp = time
},
GetBankCertificateRequest = new GetBankCertificateRequest {
BankRootCertificateSerialNo = "1111110002",
//id = "",
RequestId = reqId,
Timestamp = time
}
});
除了一些xml类型注释(PKI service description v2.3.pdf
)之外,根据文档(xml:id
)没有对此属性的描述。缺少具体的架构描述。