柔性和 WCF - 枚举错误

发布于 2024-07-17 01:40:59 字数 925 浏览 5 评论 0原文

我有一个 WCF 服务操作,它接受自定义类型 MyQuery 的数据协定参数 - function Search(q as MyQuery)。 MyQuery 对象包含 2 个属性:

MyQuery.SearchPhrase (string)  
MyQuery.SearchType (custom enum SearchTypeEnum)

我还有一个使用此服务的 Flex 客户端应用程序。 但是,当 Flex 调用 Search() 操作时,我收到有关枚举属性的以下错误:

“找不到类型的定义 'http://mydomain/2009/04/SearchTypeEnum::SearchTypeEnum"

错误是在构建对服务的请求时从 Flex 抛出。

所以我的问题是......有没有办法在 Flex 中解决这个问题?或者是我在没有枚举的情况下重新设计服务的唯一选择

?枚举数据协定是在服务层定义的:

<DataContract(Namespace:="http://mydomain/2009/04/SearchTypeEnum")> _
Public Enum SearchTypeEnum
    <EnumMember()> [Boolean] = 0
    <EnumMember()> [NaturalLanguage] = 1
End Enum

据我所知,这是枚举数据协定的正确定义,我还尝试在服务和 MyQuery 类上使用 ServiceKnownType 和 KnownType 属性,但无济于事。

I have a WCF service operation that accepts a data contract parameter of custom type MyQuery -- function Search(q as MyQuery). The MyQuery object contains 2 properties:

MyQuery.SearchPhrase (string)  
MyQuery.SearchType (custom enum SearchTypeEnum)

I also have a Flex client application that consumes this service. But when Flex invokes the Search() operation, I get the following error about the enumeration property:

"Cannot find definition for type
'http://mydomain/2009/04/SearchTypeEnum::SearchTypeEnum"

The error is thrown from Flex while it is building the request to the service.

So my question is..... is there any way to work around this issue in Flex? Or is my only alternative to redesign the service without enums?

This is how the enum data contract is defined at the service tier:

<DataContract(Namespace:="http://mydomain/2009/04/SearchTypeEnum")> _
Public Enum SearchTypeEnum
    <EnumMember()> [Boolean] = 0
    <EnumMember()> [NaturalLanguage] = 1
End Enum

As far as I know this is the correct definition of an enum data contract. I also tried using the ServiceKnownType and KnownType attributes on the service and on the MyQuery class but to no avail.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心凉怎暖 2024-07-24 01:40:59

我建议您尝试使用一个简单的 .NET 客户端——甚至可能是一个控制台应用程序。 我们的想法是看看您是否可以让任何应用程序与该服务一起使用。

I would recommend you try that with a trivial .NET client - maybe even a console application. The idea would be to see if you can get any application to work with the service.

魂牵梦绕锁你心扉 2024-07-24 01:40:59

我找不到办法让它发挥作用。 相反,我用字符串常量替换了枚举。 不那么优雅,但它有效。

I could not find a way to get this to work. Instead I replaced enums with string constants. Not as elegant, but it works.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文