Учетные данные прокси для программного класса прокси веб-службы - PullRequest
3 голосов
/ 03 августа 2011

У меня проблема с программным использованием 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.

Спасибо, ребята.

1 Ответ

0 голосов
/ 08 августа 2011

@ Различные

Вы, вероятно, хотите написать такой код, как этот

WebService WS = new WebService();
WS.Proxy = wwwproxy("http://someproxy:8080";



  WebProxy wwwproxy(string ptProxyURI) 
{
        var aProxy = New WebProxy;
        aProxy.Credentials = CredentialCache.DefaultCredentials;
        aProxy.BypassProxyOnLocal = True;
        aProxy.Address = New Uri(ptProxyURI);
        Return aProxy;
}

Надеюсь, это поможет.

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...