WCF: мне нужно заменить "http://tempuri.org/" на динамическое пространство имен? - PullRequest
3 голосов
/ 24 февраля 2011

У меня есть веб-сервис, который будет развернут на нескольких доменах.Я хотел бы избавиться от пространства имен WCF по умолчанию "http://tempuri.org/,"" и заменить его доменом, в котором развернута веб-служба, например "http://mydomain.com/.". Я знаю, что лучшим решением здесь является просточтобы веб-служба существовала в одном месте и использовала этот один домен в качестве пространства имен, но сейчас это не вариант для меня.

Я нашел частичный ответ на этот вопрос здесь .В этом посте предложенный ответ - установить свойство URL в файле конфигурации, но, боюсь, я не совсем понимаю ответ.Где именно это свойство URL?Кроме того, по независящим от меня причинам клиентское приложение, которое будет использовать этот веб-сервис, не имеет файла app.config, поэтому все настройки этого клиентского приложения должны быть заданы в коде.Я не уверен, имеет ли это значение, но решил, что упомяну об этом, на всякий случай.

РЕДАКТИРОВАТЬ: Чтобы уточнить, ссылка на "http://tempuri.org", который я пытаюсь удалить, находится внутри файла .cs, который создается svcutil.exe.

например

[System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IEmailService/SendEmail", ReplyAction = "http://tempuri.org/IEmailService/SendEmailResponse")]
void SendEmail(Services.Internal.CorrespondenceWebService.Email email);

1 Ответ

6 голосов
/ 24 февраля 2011

Возможно, вы путаете пространства имен XML с URL-адресами.Вот пример пространства имен, которое не является URL: urn:schemas-microsoft-com:datatypes.

Поскольку пространство имен не обязательно является URL, вам не нужно изменять его для каждой среды.

НаС другой стороны, вы должны выбрать пространство имен и использовать его последовательно.Возможно, что-то вроде http://services.mydepartment.mycompany.com/myservice/.Вы действительно не хотите отправлять сервис, который все еще использует http://tempuri.org/, поскольку это демонстрирует недостаточное понимание пространств имен.


В ответ на ваш обновленный вопрос: эти пространства имен присутствуют в.cs файл, созданный svcutil.exe, потому что они присутствуют в метаданных сервиса.Вам необходимо изменить их в службе, и когда клиент будет создан или обновлен, у него будут правильные пространства имен.

...