我根据规范我准备了WCF服务。它运作正常。我有一个方法,用[OperationContract]装饰,称为搜索。
看起来像这样(我已经更改了自定义类型名称,但这并不重要):
SearchResult Search(SearchCritery searchCritery, string connectionWith);
之后我得到了wsdl,这也没关系。但是,有一件事是错的:
<xs:element name="Search">
<xs:complexType>
<xs:sequence>
<xs:element type="q1:SearchCritery" name="searchCritery" nillable="true" minOccurs="0" xmlns:q1="someCustomSchema"/>
<xs:element type="xs:string" name="connectionWith" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
正如您所看到的,两个输入参数都被标记为可为空而不是必需的。我该怎么做,改变我的代码,使它们成为必需而不是可空的。当然,如果他们不是我的代码,我会检查并返回相应的相关信息,但我必须在wsdl中显示。 另一件事是,我无法改变这种方法和params声明(类型等)
任何帮助都是有价值的。
已编辑:(已添加DataContract)
为问题目的简化归档名称
[DataContract]
public class SearchCritery
{
public SearchCritery()
{ }
[Power(6)]
[DataMember]
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 0)]
public string FieldA { get; set; }
[Power(5)]
[DataMember]
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 1)]
public string FieldB { get; set; }
[Power(1)]
[DataMember]
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 2)]
public string FieldC { get; set; }
[Power(5)]
[DataMember]
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 3)]
public string FieldD { get; set; }
}
如你所见,第二个参数 - 字符串,不是在Datacontract中,因为我不知道ho3要添加&#34;只有字符串&#34;作为数据合同成员。