Win32Exception: целевое имя участника неверно при вызове службы WCF с WebClient
Я собрал краткий пример кода с linqpad, показывающим вызов веб-службы WCF без создания прокси-класса из WSDL. Вот что у меня есть:
using (var wb = new WebClient())
{
wb.Credentials = CredentialCache.DefaultNetworkCredentials;
wb.Headers.Add("Content-Type: text/xml;charset=UTF-8");
wb.Headers.Add("SOAPAction: \"http://tempuri.org/Core/Project_GetNumberForExternalUse\"");
String requestString = @"
<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:tem=""http://tempuri.org/"">
<soapenv:Header/>
<soapenv:Body>
<tem:Project_GetNumberForExternalUse>
<!--Optional:-->
<tem:extData1>ext 1</tem:extData1>
<!--Optional:-->
<tem:extData2>ext 2</tem:extData2>
<!--Optional:-->
<tem:extData3>ext 3</tem:extData3>
<!--Optional:-->
<tem:extData4>ext 4</tem:extData4>
<!--Optional:-->
<tem:extDataLong>ext 1ext 1ext 1ext 1ext 1</tem:extDataLong>
</tem:Project_GetNumberForExternalUse>
</soapenv:Body>
</soapenv:Envelope>
";
var response = wb.UploadString("http://myserver:55002/Core.svc", "POST", requestString);
response.Dump();
}
Это прекрасно работает при подключении к localhost, но не к myserver. Служба WCF настроена на использование проверки подлинности Windows. Исходя из ошибки, я предполагаю, что проблема в том, что имя участника службы не включается в авторизацию. Если бы я использовал клиент WCF с прокси-сервером, я бы обратился к этому с помощью раздела конфигурации конечной точки / идентификации. Однако я не вижу способа установить это в коде. Разве нет способа сделать это? Есть ли другой способ обойти это требование?