如何防止xsd文件中的maxOccurs =“unbounded”

时间:2012-03-02 18:20:57

标签: .net wcf web-services silverlight-5.0

我的安全扫描失败了。

的maxOccurs = “无限”

在我的silverlight客户端上创建一个xsd,以获取我的某个Web服务的服务参考。

我是否可以在Web服务中设置属性或某些内容以防止以这种方式生成xsd?

它实际上是一个WCF

1 个答案:

答案 0 :(得分:1)

WCF没有支持。即使你真正签订合同并在wcf从wsdl + xsd生成类时手动编写消息合同,如果它大于1,它将忽略maxOccurs值。因此,当您公开服务时,生成的合同将再次具有maxOccurs="unbounded"

但是,您可以通过实现实现IWsdlExportExtension, IEndpointBehavior接口的自定义端点行为来轻松更改此行为:

  • 根据合约(wsdl + xsd)
  • 创建课程
  • 将合同文件复制到服务主机项目的文件夹中
  • 将您的端点行为添加到服务端点
  • 在端点行为类中,将生成的模式导入替换为您的真实xsd

这样生成的合同将包含原始模式而不是生成的模式。

此外,您还需要使用xsd验证XML文件。因为WCF不会验证您的maxOccurs属性。