有沒有方法可以改變asp.net生成.asmx文件生成的WSDL元素的方式?具體來說,它似乎標記所有元素minoccurs =「0」,並有一些元素,我想要minoccurs =「1」(又名必填字段)。更改ASP.NET生成的ASP.NET Web服務的WSDL
其中之一是Web服務的參數(例如,foo(arg1,arg2),其中我希望在WSDL中生成arg2作爲minoccurs =「1」)另一個是類中特定的字段到arg1。我是否必須放棄自動生成WSDL並採取「合同優先」方法?
有沒有方法可以改變asp.net生成.asmx文件生成的WSDL元素的方式?具體來說,它似乎標記所有元素minoccurs =「0」,並有一些元素,我想要minoccurs =「1」(又名必填字段)。更改ASP.NET生成的ASP.NET Web服務的WSDL
其中之一是Web服務的參數(例如,foo(arg1,arg2),其中我希望在WSDL中生成arg2作爲minoccurs =「1」)另一個是類中特定的字段到arg1。我是否必須放棄自動生成WSDL並採取「合同優先」方法?
我認爲XmlElement(IsNullable = true)
屬性將做的工作:
using System.Xml.Serialization;
[WebMethod]
public string MyService([XmlElement(IsNullable = true)] string arg)
{
return "1";
}
EDIT [VB版]
Imports System.Xml.Serialization
Public Function MyService(<XmlElement(IsNullable:=True)> ByVal arg As String) As String
Return ("1")
End Function
使用的XMLElement(ISNULLABLE =真)產生的minOccurs = 1,但它也會在WSDL中生成nillable =「true」,這是不可取的。
我知道的唯一方法(升級到WCF的簡稱)是使用[XmlSchemaProvider]屬性。這允許您指定一個方法,該方法將返回將作爲WSDL一部分發出的模式。當你到達這一點時,你可能會發現最好是親手編寫自己的WSDL,這樣你就不必擔心如何強制.NET爲你編寫它。然後,您只需將WSDL放置在網站上的已知位置(可能與服務位於同一站點),然後告訴客戶使用http://url/service.wsdl而不是service.asmx?wsdl。
你知道你在VB.NET中怎麼做?我似乎無法找到相應的表達式...... – user7243 2008-10-10 16:05:17