Utworzono usługę WWW za pośrednictwem WCF. Następnie udostępniłem go jako usługę internetową, aby była użyteczna w aplikacji .NET 2.0. Stworzyłem niektóre DataContract z DataMember, które mogłyby być wykorzystane przez wystawiony OperationContract.Dlaczego atrybut określony w usłudze Web Service DataMember musi być ustawiony dla int i Data, ale nie dla String
Zauważyłem, że gdy próbuję utworzyć DataClass, która ma być przekazana w usłudze WWW, każdy atrybut DataContract ma teraz atrybut "Określony" partnera dla każdego elementu członkowskiego.
Na przykład:
[DataContract]
public class Sales
{
[DataMember]
public int InvoiceNo;
...
}
Kiedy tworzę instancję klienta w sprzedaży usług internetowych. Otrzymuję atrybut o nazwie InvoiceNo i InvoiceNoSpecified.
Oto moje pytanie, kiedy atrybut jest typu ciąg, nie muszę ustawiać odpowiadającego atrybutu "Określony" na true, ale gdy typem atrybutu jest int lub DateTime, jeśli nie ustawię odpowiadający atrybut "Specified" to true, wartość staje się pusta w hoście usługi WWW. Czy istnieje sposób na uniknięcie ustawiania określonego atrybutu? Ponieważ muszę wywoływać funkcje usługi sieciowej w wielu miejscach w moim kodzie. Naprawdę trudno byłoby śledzić je wszystkie.
Próbowałem użyć DefaultValueAttribute dla tego. Kiedy używam wartości domyślnej, co się dzieje, nawet jeśli ustawię wartość parametru date w kliencie.Ponieważ nie ustawiłem wartości dateSpecified = true, wartość daty jest zawsze wartością domyślną. // kod na kliencie prm.DepositDate = dtp_Deposit.Value.Date; // kod usługi [DefaultValue (typeof (DateTime), "1900/01/01")] public DepositDate; – Nap
Dziękuję człowieku. Miałem ten sam problem z usługami Pythona soaplib i klientami .net. Zawsze musiałem ustawić Określony na true. Oto przykład, jak to naprawić w Pythonie: @rpc –
Elalfer