Когда я использую инструмент метаданных модели службы, я получаю следующую ошибку
svcutil wsdl Error: The type name: on the property:"Name" of type:"System.CodeDom.CodeNamespace" is not a valid language-independent type name.
когда я выполняю следующую строку
svcutil my.wsdl /n:*,"www.abc.com/x" /out:my.cs
пространство имен "/x" является источником ошибки, но я не могу это исправить. Я могу изменить пространство имен в исходном документе на «www.abc.com», и это работает, без ошибок, но это не решение, поскольку я не владею исходным wsdl и не могу изменить его на то, что мне нравится.
да, верно, csv пространств имен
Как указано Дэвид Гwww.abc.com/x
не является допустимым пространством имен
Средство утилиты метаданных ServiceModel (Svcutil.exe)
Specifies a mapping from a WSDL or XML Schema targetNamespace to a CLR namespace. Using '*' for the targetNamespace maps all targetNamespaces without an explicit mapping to that CLR namespace.
To make sure that the message contract name does not collide with operation name, you should either qualify the type reference with ::, or make sure the names are unique.
Default: Derived from the target namespace of the schema document for Data Contracts. The default namespace is used for all other generated types.
Short Form: /n Note: When generating types to use with XmlSerializer, only a single namespace mapping is supported. All generated types will either be in the default namespace or the namespace specified by '*'.
svcutil Import.wsdl /n:*,"import.www.abc.com" /out:Import.cs Вот что наконец сработало. Я не знал, что второй параметр /n был пространством имен назначения, я думал, что это пространство имен wsdl происхождения.
Разве настройка пространства имен не должна быть чем-то вроде
/n:http://www.example.com/x,MyNamespace.X
?