gpt4 book ai didi

c# - WCF 数据限制

转载 作者:太空狗 更新时间:2023-10-29 22:01:58 25 4
gpt4 key购买 nike

难道还没有办法通知消费客户端数据限制吗?

这个问题绝对是其他问题的重复,这些问题从未被回答过或至少已有 5 年没有可行的解决方案。这些链接已经过时或没有帮助或引用 .Net 3.x,当时我们无能为力。

需要说明的是,这与服务验证无关...请不要去那里。这只是关于通过自动生成的 WSDL/XSD 让客户端了解限制。

给定以下 WCF 服务,指定了 StringLength、Range 和 DefaultValue....

VB 版本:

<ServiceContract([Namespace]:="example.com")>
Public Interface IWCF_Service
<OperationContract()>
Function Test1(Value As Something) As String

Class Something
<StringLength(50), DefaultValue("Whatever")>
Public Property Thing1 As String = "Whatever"

<Range(5, 50), DefaultValue(10), Required>
Public Property Thing2 As Int32 = 10
End Class
End Interface

C#版本:

[ServiceContract(Namespace = "example.com")]
public interface IWCF_Service
{
[OperationContract()]
string Test1(Something Value);

public class Something
{
[StringLength(50), DefaultValue("Whatever")]
public string Thing1 { get; set; }

[Range(5, 50), DefaultValue(10), Required()]
public Int32 Thing2 { get; set; }
}
}

...生成的 XSD 缺少默认值和限制,Thing2 应该是 minOccurs="1" 因为它是必需的:

<xs:complexType name="IWCF_Service.Something">
<xs:sequence>
<xs:element minOccurs="0" name="Thing1" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="Thing2" type="xs:int" />
</xs:sequence>
</xs:complexType>

这是我所期待的(或类似的):

<xs:complexType name="IWCF_Service.Something">
<xs:sequence>
<xs:element minOccurs="0" name="Thing1" nillable="true" default="Whatever">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Thing2" default="10">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="5" />
<xs:maxInclusive value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>

最佳答案

对我来说,我通过创建一个必须为 var 的附加类来做到这一点

status as short 
const SUCCESS as short= 1
const FAILED as short= 0
msg as string

和一个返回此类对象的函数名称调用,我所有的服务调用都被重定向到这个函数,这是一个常量,用于 res 检查是否应用了想要的函数,如果没有,我根据消息

dim Result=//wcf call
if Result.status=SUCCSES then
//do something
else
msgbox(Result.msg)
end if

关于c# - WCF 数据限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41947462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com