我有一個使用.Net 4.0框架的WCF
SOAP Web服務。我正在使用contract first
方法 - 即使用WCSF藍色工具從手寫WSDL生成服務代碼。使用XML進行WCF請求驗證
我對請求消息有以下要求。
如果價格小於100,則不得有稅元,但是如果它大於100,則需要稅元。
在XPath表達式將如下
//t:price[. < 100][not(following::t:tax)] or
//t:price[. >=100][following::t:tax]
我可以在服務的C#代碼處理它。但是我想使用任何XML技術來定義它在WSDL中的規則。這將幫助客戶知道什麼是輸入消息應該符合的業務驗證。 (這是業務規則的定義,其實施在WSDL本身;而不是其他文檔將被分享給客戶端。)
在WCF中實現它的最佳方式是什麼?在WSDL
的哪一部分下,我可以定義XML validations
,以便它將由WCF
處理?
在下面給出的前兩個參考文獻中,提到了關於XPath
和C#處理程序(用於Web服務框架)的方法。我們不能在WCF中這樣做嗎?不能C#從WSDL讀取XPath?怎麼做?任何參考?
注意:我沒關係讓C#處理程序執行;但business logic
爲validation
應在XML
參考
- Extend the ASP.NET WebMethod Framework with Business Rules Validation -by Aaron Skonnard and Dan Sullivan
- WS-Policy and WSE 2.0 Assertion Handlers – by Aaron Skonnard
- Hartmut's Box - The Four Tenets and XML Messaging with WCF
- Message validation with Schema in WCF
- XML validation with Schematron/XSD in C#
- Defining xml in an xsd where an attribute determines the possible contents
您的兩個引用對WCF沒有任何直接適用性。 WCF框架取代了這些鏈接中引用的WSE和XML Web服務框架。 WCF支持使用WS-Policy&WS-PolicyAssertions來定義soap XML的結構。如果我今天有時間,我會把一些東西放在一起做類似於你想要達到的目標。 – 2013-03-19 13:08:23
我們成功地在schematron中編寫了* simple *驗證規則,並在處理程序中驗證了這些規則。但是,請參閱http://stackoverflow.com/questions/787554/xml-validation-with-schematron-xsd-in-c-sharp。您可能想重新考慮僅限xml的需求。 – flup 2013-03-21 21:38:22
@SixtoSaez謝謝。期待您的回答。即使你不能提供完整的代碼,如果你能分享類/邏輯/參考文章,那將是非常好的。 – Lijo 2013-03-25 08:50:22