Я пытаюсь работать с WSDL, используя ядро .NET.
В настоящее время я могу импортировать WSDL и сгенерированы соответствующие файлы:
Структура сделана правильно, и кажется, что все должно работать как положено.
Теперь в ASP.NET у меня будет XML с такой информацией:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="SI_SearchItem_OutBinding" />
<binding name="SI_SearchItem_OutBinding1">
<security mode="Transport">
<transport clientCredentialType="Basic" proxyCredentialType="Basic" realm="XISOAPApps" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="HTTP_ENDPOINT_LINK"
binding="basicHttpBinding" bindingConfiguration="SI_SearchItem_OutBinding"
contract="SI_Out.SI_SearchItem_Out" name="HTTP_Port" />
<endpoint address="HTTPS_ENDPOINT_LINK"
binding="basicHttpBinding" bindingConfiguration="SI_SearchItem_OutBinding1"
contract="SI_Out.SI_SearchItem_Out" name="HTTPS_Port" />
</client>
</system.serviceModel>
Поскольку у нас больше нет web.config
в ядре, я пытаюсь программно добавить эти конфигурации.
Глядя на Reference.cs
, я заметил две вещи:
ConfigureEndpoint
не реализован в сгенерированных файлах, из-за чего я подумал, что мне нужно выполнить мои настройки там.
ConfigureEndpoint
определяется следующим образом: static partial void ConfigureEndpoint(System.ServiceModel.Description.ServiceEndpoint serviceEndpoint, System.ServiceModel.Description.ClientCredentials clientCredentials);
Но эта функция вызывается
public SI_SearchItem_OutClient(EndpointConfiguration endpointConfiguration) :
base(SI_SearchItem_OutClient.GetBindingForEndpoint(endpointConfiguration), SI_SearchItem_OutClient.GetEndpointAddress(endpointConfiguration))
{
this.Endpoint.Name = endpointConfiguration.ToString();
ConfigureEndpoint(this.Endpoint, this.ClientCredentials);
}
Который не принимает учетные данные клиента в параметрах конструктора, поэтому я не могу фактически программно реплицировать вышеуказанный код xml внутри функции configureEndpoint.
Надеюсь, я хорошо объяснил, что практически единственное, что я пытаюсь сделать, - это иметь возможность аутентифицировать мои вызовы SOAP с помощью учетных данных, программно реплицируя вышеуказанный код XML внутри частичной функции ConfigureEndpoint.
Спасибо, что нашли время ответить, Зено