2009-03-04 7 views
0

Ich hatte gerade einen Laptop-Crash (verschüttetes Wasser darauf). Ich habe meinen Arbeitscode (vor 2 Tagen Sicherung) von einem Windows Server 2008-Laptop auf einen Vista-Laptop mit Visual Studio 2008 SP1 kopiert. Beide verwenden .NET 3.5 SP1.Was kann dazu führen, dass Eigenschaften in einer .NET-Service-Referenz beim Aufruf ungültig werden?

Ich habe einen Web-Methodenaufruf, der Produktinformationen zurückgibt.

Einige der Felder in der Web-Service (auf einem gehosteten Server ausgeführt wird) sind wie folgt:

public class Product 
{ 
    [XmlAttribute("sku")] 
    public string SKU; 

    [XmlAttribute("name")] 
    public string Name; 

    [XmlAttribute("category")] 
    public string CategoryName; 

    [XmlAttribute("categoryKey")] 
    public string CategoryKey; 

    public List<ProductSectionInfo> Sections; 

    public List<MediaItem> MediaItems; 

    public string Foo = "bar"; 
} 

public class MediaItem 
{ 

    [XmlAttribute("type")] 
    public string Type; 

    [XmlAttribute("imageKey")] 
    public string ImageKey; 

    [XmlAttribute("path")] 
    public string Path; 

    [XmlAttribute("thumbnailPath")] 
    public string ThumbnailPath; 

    [XmlAttribute("thumbnailImageKey")] 
    public string ThumbnailImageKey; 

    [XmlAttribute("selectable")] 
    public bool Selectable; 
} 

Wenn betreibe ich eine 'GetProduct' Web-Methode die 'Sections' Eigenschaft in meinem C# Client bevölkert wird (auf der neuer Laptop), aber die 'MediaItems Eigenschaft ist nicht. Es erscheint nur als Null im Überwachungsfenster.

Also ich schaue in Fiddler und beide sind in der XML aufgefüllt. Beide sind Listen, die in meinem Proxy als Standard [] - Arrays definiert sind.

Sie haben vielleicht bemerkt, dass ich oben eine "Foo" -Eigenschaft hinzugefügt habe. Ich habe das auf dem Server gemacht, die Web-Referenz neu kompiliert und neu erstellt. Ich konnte bestätigen, dass die "Foo" -Eigenschaft in dem Client zustande gekommen ist. Es ist also nicht so, dass 'MediaItems' groß geschrieben wird oder ähnliches.

Ich bin ziemlich überzeugt, dass es auf diesem neuen Laptop etwas gibt, das sich von dem anderen unterscheidet. Ich hatte wirklich nichts Neues geschrieben, nur anderswo Änderungen vorgenommen. Und ich habe den Service-Referenz-Proxy noch nicht einmal neu erstellt, bis ich ein Problem bemerkte. Eine andere Instanz meines Clients, die auf einem Testserver ausgeführt wird, läuft einwandfrei, wenn derselbe Dienst ausgeführt wird.

Fixed Laptop kommt morgen zurück, aber ich würde wirklich gerne auf den Grund gehen. Ich bin ziemlich verwirrt. Ich habe schon so viele seltsame Dinge gesehen, aber ich kann wirklich nicht sehen, was hier los ist. Kann ich irgendwie in den Proxy debuggen?

Antwort

0

Ich wusste, dass dies die Art von Problem war, dass, sobald ich etwas anstellte, es sich lösen würde - und natürlich war es.

Ich habe immer noch keine Ahnung warum. Die Tatsache, dass ich eine "Foo" -Eigenschaft hinzufügen, den Proxy regenerieren konnte und es immer noch nicht funktionierte, ist sehr seltsam.

  • ich ein neues "MediaItems2 Eigentum und zugeordnet eine leere 'MediaItem', um es

    MediaItems2 = new List (neu MediaItem [] {new MediaItem()})

  • hinzugefügt erzeugt I ein neuer Proxy
  • Alles funktionierte
  • I 'MediaItems2' aus dem Web-Service
  • gelöscht erzeugte ich einen neuen Proxy
  • Es funktionierte immer noch

Immer noch sehr verwirrt. Dies ist das allererste Mal, dass dieses Projekt (ASP.NET MVC) sogar auf diesem Laptop ausgeführt wurde.

Oh gut, zurück zur Arbeit ....

0

Die meisten Probleme mit Teilen einer Nachricht, die nicht richtig geladen werden, sind normalerweise ein Unterschied zwischen dem Proxy und dem Dienst. In der Regel entweder etwas geändert/verschoben, oder sogar XML-Namespace Änderungen/Probleme.

Verwandte Themen