2009-07-20 9 views
1

私はASP.NET Webサービスを構築しています。minOccursを1に設定する方法

私のコードは以下のように定義されていますが、wsdlでFirstNameプロパティとLastNameプロパティのminOccursを指定する方法を理解できません。私はそれらを必要に応じて欲しいし、空にすることはできません。出来ますか?

[WebMethod()] 
public void TestMethod(TestClass Test) 
{ 
    ... 
} 

[Serializable] 
public class TestClass 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; }  
} 
+0

http://social.msdn.microsoft.com/Forums/en-US/30d3517b-98c5-44d0-b621-4f3343ce8ea2/を見ますget-wsdl-to-produce-minoccurs0 - 無視されたプロパティを追加する '[XmlIgnore] public bool {{TheProperty}}指定された{get;セット; 'TheProperty 'が設定されているときに設定します。 – drzaus

答えて

0

同じ問題を持つ別のスレッドで詳細な回答を投稿しました:How to make a dotnet webservice set minOccurs=“1” on a string value

ただし、文字列の答えはではなく、です。

唯一の方法は作るのminOccurs = 1が真= NULL可能にはデフォルト値(文字列はのデフォルト値はString.Emptyをへ性なしとプロパティを宣言することなく値が指定されているかどうかをチェックします(名前に「指定された」単語が付加された同じプロパティ名にする)。

ジョン・サンダースの答えが真であればあなたはまだ限定されています。

WSDLは着信XMLの検証には使用されないことが判明しました。 minOccursを指定できるかどうかは関係ありません。入力の検証には使用されません。あなたが反対( `のminOccurs = 0 ')を期待して、ここでつまずく場合

0

文字列は定義NULL可能による参照タイプなどです。あなたのプロパティが整数だった場合は、1つだけだったでしょう。

シリアライザを強制的にヌルにしないようにすることができます。 [XmlElement( "name"、IsNullable = false)]
プロパティの上。

編集:私は値型の代わりに参照型を意味しました。 Thnx Joren!

+0

私はそれが正しいとは確信していません。私はIsNullableがxsi:nilが許可されているかどうかを管理していると思います。私はminOccursに影響を与える方法はないと信じています。 –

+0

文字列は値型ではなく、値型はNULLではありません( 'int? 'のような場合を除いて)。 – Joren

2

WSDLは、着信XMLの検証には使用されません。 minOccursを指定できるかどうかは関係ありません。入力の検証には使用されません。

+1

この経験的な知識ですか?またはこの事実を記載したMSDNの資料がありますか?私はWCF/WSDL /検証についてもっと学びたいと思っています。これは非常に興味深いようです。 –

+0

これは主に経験的知識です。また、SOAP拡張を使用して検証する方法に関する記事もあります。これは、SOAP拡張機能を使用しないと検証が実行されないことを意味します。最後に、常識があります。検証が行われた場合は、検証をオフにする方法が必要です。そのようなスイッチはありません。 –

+0

"SOAP-Extension"とは、http://msdn.microsoft.com/en-us/library/aa717047.aspxに示すようなMessageInspectorの作成を意味しますか? –

関連する問題