2010-11-23 10 views
2

ich einen ASMX Web-Service haben, die eine Methode hat - habeDie Verwendung generische Sammlungen als Parameter in ASMX Web Services

void DoSomething(List<string> list); 

ich diesen Dienst implementiert, zusammengestellt und in IIS gehostet. Ich habe wsewsdl3.exe verwendet, um den Proxy zu generieren. In der generierten Proxy wird die Methodendefinition geändert -

DoSomething(string[] list) { .. 

Ist es nicht möglich Liste als Parameter auf einen ASMX Web-Service zu haben? Was muss ich tun, um den Proxy zu reparieren?

+0

BTW, Sie verwenden WSE. Wusstest du, dass es sehr veraltet ist? –

+0

Ja John, wir verwenden WSE. Wir ziehen auf WCF um, da einige unserer Kunden zu Windows Server 2008 wechseln. Die meisten Kunden sind jedoch nicht und wir müssen sie für sie unterstützen. Ich habe auch Ihren Blogbeitrag in den MSDN-Foren http://social.msdn.microsoft.com/Forums/en/asmxandxml/thread/65224159-b7bf-44dc-937b-94fe2440ba70 gefunden. Ich werde versuchen, es zu verwenden, um die Upgrade-Storys priorisiert zu bekommen :). –

Antwort

6

Das ist normal. Generics sind ein .NET-spezifisches Artefakt. In der generierten WSDL gibt es keinen solchen Begriff. Stellen Sie sich einen Client vor, der beispielsweise keine Generika wie PHP unterstützt. Das ist der Grund, warum Ihre generische Sammlung als Array verfügbar gemacht wird. Es ist also nichts falsch mit Ihrem Client-Proxy, der Fixing erfordert.

+0

Ahh ok. Dann ist es möglicherweise besser, wenn ich die Service-Methode ändern, um string [] anstelle einer Liste zu akzeptieren. –

+0

Nun, es liegt wirklich an dir. Es macht keinen Unterschied, aber wenn Sie die exakt gleiche Signatur bevorzugen, dann können Sie sie ändern. –

+0

@Unmesh: Sie müssen nichts ändern. Wenn Sie "Add Service Reference" verwendet haben, um den Client zu erstellen, hätte die Schaltfläche "Advanced" einen Dialog angezeigt, in dem Sie 'List ' anstelle von 'T []' verwenden können. –