Я использую NSIS для создания установщика, и как часть этого установщика я получаю информацию о службе WCF (то есть URL, имя пользователя и пароль). Мне нужно проверить эти детали.
В C # я создаю ссылку на сервис и просто делаю следующее:
var proxy = new ServiceClient(httpsBinding, serviceEndpointAddress);
proxy.ClientCredentials.UserName.UserName = userName;
proxy.ClientCredentials.UserName.Password = password;
try
{
proxy.Open();
}
catch (EndpointNotFoundException ex)
{
// Return the end point's not valid
}
etc
Теперь мне нужно сделать это в C ++, чтобы он мог вызываться из NSIS (я исследовал методы вызова C # из NSIS, и все они кажутся излишними для того, что я хочу сделать). Мне удалось преобразовать код, который генерирует привязку и адрес конечной точки, однако я застрял при создании ServiceClient
,
Я добавил «Веб-ссылку» в проект, но нет эквивалента ServiceClient
в ServiceReference
Пространство имен. Это:
ServiceReference::ServiceClient ^service = gcnew ServiceReference::ServiceClient(httpsBinding, endpointAddress);
не компилируется как:
«ServiceClient»: не является членом «ServiceReference»
Так как мне создать клиента?
вы пробовали gSOAP?
http://gsoap2.sourceforge.net/
это то, что мы используем для доступа к WS * из программ на C ++.
Вы можете сделать хорошую работу вокруг,
Создайте C # DLL, используйте regasm, чтобы зарегистрировать эту DLL,
тогда вы можете использовать его из вашей программы на C ++.
В конце концов я пошел с использованием NSIS «Вызвать плагин .NET DLL методов» что было действительно излишним для того, что мне нужно было сделать, но мне нужно было решение, которое сработало, и у меня не хватило времени.