Как опустить пространства имен запросов и ответов в SoapRpcMethodAttribute, которые связаны с URL-адресом и портом в сервисе C# asmx?

Предпосылки моей задачи:

Меня попросили переписать EJB-сервис, который был развернут на JBOSS-сервере, на C#-сервис для развертывания на IIS. Я не имею понятия о технологии, на которой написан клиент, и не имею доступа к ней на стадии разработки. Единственная информация, которую я имею, это код старой службы javabeans (EJB) и wsdl, сгенерированный на сервере, где развернута эта старая служба.
В целях тестирования сервиса я могу использовать вспомогательную программу, которая должна эмулировать клиента и использовалась еще во времена старой разработки сервиса (написана на delphi).

Итак, я использовал сгенерированный wsdl текущего сервиса и инструмент wsdl.exe и получил автоматически сгенерированный интерфейс для моего C#-сервиса.

Вот оно (с URL, измененными на текущие):

[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "4.6.1055.0")]
[System.Web.Services.WebServiceBindingAttribute(Name = "MyServiceSoapBinding", Namespace = "http://localhostURL:port/../MyService.asmx")]
public interface IMyServiceSoapBinding
{
    /// <remarks/>
    [System.Web.Services.WebMethodAttribute()]
    [System.Web.Services.Protocols.SoapRpcMethodAttribute("MyMethod", RequestNamespace = "http://localhost:port/../MyService.asmx", ResponseNamespace = "http://localhost:port/../MyService.asmx")]
    void MyMethod(ClassA objectA);
}

Как видите, атрибуты service и method содержат пространства имен, основанные на URL-адресе и порте, где служба развернута в данный момент на dev. среда. Тестовое клиентское приложение может вызывать сервис только с такими значениями, а также в этом приложении мне пришлось изменить строку кода:

InvRegistry.RegisterInterface(TypeInfo(MyService), 'http://localhost:port/../MyService.asmx', 'UTF-8');

соответствовать текущему URL. (Ранее здесь был старый адрес URL, такой же, как в сгенерированном интерфейсе)

Проблема: С моей точки зрения, выглядит плохим решением использовать такой сервис, который следует редактировать и перекомпилировать каждый раз, когда он развертывается на реальном сервере, чтобы пространства имен были правильными и соответствовали фактическому URL. Но мне не удалось найти другое решение. Буду признателен за ваши идеи.

0 ответов

Другие вопросы по тегам