У меня проблема с программным использованием WebService с использованием WSDL под прокси-сервером squid.Мое приложение встроено в c # .net.Я компилирую сборку из XML, после импорта дескриптора службы, используя это:
// a namespace and compile unit are needed by importer
CodeNamespace codeNamespace = new CodeNamespace();
CodeCompileUnit codeUnit = new CodeCompileUnit();
codeUnit.Namespaces.Add(codeNamespace);
ServiceDescriptionImportWarnings importWarnings = descriptionImporter.Import(codeNamespace, codeUnit);
if (importWarnings == 0) // no warnings
{
// create a c# compiler
CodeDomProvider compiler = CodeDomProvider.CreateProvider("CSharp");
// include the assembly references needed to compile
string[] references = new string[2] { "System.Web.Services.dll", "System.Xml.dll" };
CompilerParameters parameters = new CompilerParameters(references);
// compile into assembly
CompilerResults results = compiler.CompileAssemblyFromDom(parameters, codeUnit);
foreach (CompilerError oops in results.Errors)
{
// trap these errors and make them available to exception object
throw new Exception("Compilation Error Creating Assembly");
}
// all done....
return results.CompiledAssembly;
}
else
{
// warnings issued from importers, something wrong with WSDL
throw new Exception("Invalid WSDL");
}
Проблема в том, когда я вызываю метод Invoke (obj, args).Прокси-соединение прерывает соединение, если я вызываю WSDL с использованием внешнего адреса, например http://My_external_ip/my_webService.asmx. Если я звоню с использованием внутреннего адреса, все работает нормально.
Когда я добавляю веб-ссылку, вручную, я использую для некоторыхчто-то вроде:
WebService WS = new WebService();
WS.Proxy = Proxy.credentials;
это работает, но я не смог найти, где давать учетные данные прокси при использовании Assembly.
Спасибо, ребята.