Your error is to do with the type of object that you are passing to your webservice. VB.NET is rather particular in what you can pass to it. I would have a look at this article
You must implement a default accessor on System.Array b...[
^]
It would appear that you need to change the array to a generic list, there is an example of this in the article. Also to return a true dataset you will need to change
Return ds
to, as the above will return a
Diffgram[
^]
return ctype(ds, dataset)