我试图通过Web服务连接我的开发PBBI服务器以验证地址。看起来我遇到了身份验证问题。我没有这方面的文件。如果你们有任何关于验证服务的线索我需要验证的方法是什么?
异常
mscorlib.dll中发生未处理的“System.ServiceModel.Security.MessageSecurityException”类型异常
其他信息:HTTP请求未经授权使用客户端身份验证方案“Ntlm”。从服务器收到的身份验证标头是'Basic realm =“DCGRealm”'
代码
var validateClient = new ValidateAddressClient("ValidateAddressPort");
validateClient.ClientCredentials.UserName.UserName ="Admin";
validateClient.ClientCredentials.UserName.Password = "ADMIN";
var address1 = new input_portAddress
{
AddressLine1 = "1825B Kramer Lane",
AddressLine2 = "Suite 100",
PostalCode = "78758",
City = "Austin",
StateProvince = "Texas"
};
var addresses = new input_portAddress[2];
addresses[0] = address1;
var options = new options {OutputCasing = OutputCasing.M};
output_portAddress[] results =
validateClient.ValidateAddress(options, addresses);//Exception happening here.
配置
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="ValidateAddressSoapBinding" >
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Basic"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://webserviceURL:8080/soap/ValidateAddress"
binding="basicHttpBinding" bindingConfiguration="ValidateAddressSoapBinding"
contract="PBBIWebService.ValidateAddress" name="ValidateAddressPort" />
</client>
</system.serviceModel>
如何解决这个问题?
答案 0 :(得分:0)
有关配置更新此部分system.serviceModel > bindings > basicHttpBinding
<basicHttpBinding>
<binding name="ValidateAddressSoapBinding" >
<security mode="Transport">
<transport clientCredentialType="Basic"/>
</security>
</binding>
</basicHttpBinding>
代码方
var validateClient = new ValidateAddressClient();
validateClient.ClientCredentials.UserName.UserName = "Admin";
validateClient.ClientCredentials.UserName.Password = "ADMIN";
validateClient.Open();
var address1 = new input_portAddress
{
AddressLine1 = "1825B Kramer Lane",
AddressLine2 = "Suite 100",
PostalCode = "78758",
City = "Austin",
StateProvince = "Texas"
};
var addresses = new input_portAddress[2];
addresses[0] = address1;
var options = new options { OutputCasing = OutputCasing.M };
output_portAddress[] results =
validateClient.ValidateAddress(options, addresses);
validateClient.Close();