2012-01-10 10 views
2

我一直在Google上搜索多年,但無法找到我面臨的問題的答案。這裏的情況:讓視覺工作室瞭解web服務的返回類型與現有類型相同

我有一個.NET Web服務(不WCF服務,但一個老式的Web服務),有一個Web方法將其退還,也就是說,X類型的對象

現在,當我從一個不同的.Net項目創建對這個Web服務的服務引用時,Visual Studio將生成一個代理類(在reference.vb中),並且此類中的Web方法的返回類型是該代理類,類型Y)而不是類型X.

事情是,類型X是一種在web方法的兩端存在的外部引用中聲明的類型。是否有任何方式(服務本身應該保持一個Web服務,但我不在乎引用是「服務引用」還是「Web引用」)我可以讓Visual Studio明白,不需要創建一個代理類,它可以使用現有類型的方法的返回類型?

我知道服務引用可以自動映射類型(您可以在創建服務引用時設置這些設置)。不過,這似乎只是創建服務引用WCF服務時的工作,而不是一個正常的.NET Web服務

更新:

看來我需要以某種方式使視覺工作室匹配類型的命名空間。 John Saunders暗示了我可以用來指定類型的完整名稱空間的xmltype屬性。我會嘗試如果這有效。

我也想過visual studio如何與類匹配。似乎沒有關於任何地方的Web服務的wsdl中的名稱空間的信息(假設studio使用wsdl作爲生成引用的輸入),那麼studio如何匹配這些類型呢?

Update2: 我試過使用xmltype來映射命名空間。我不確定要使用哪個命名空間(uri類的實際ClrNamespace),所以我嘗試了兩種。使用uri命名空間,我能夠在svcmap中創建一個命名空間映射,但是這導致reference.vb文件中的代碼在額外的命名空間內生成,而不是讓VS想要映射該類型。任何新想法的?難道這真的很難嗎?

+0

WCF _is_ normal .net Web服務。 ASMX服務是舊的傳統技術。 – 2012-01-10 17:31:43

+1

您是否在「添加服務引用」對話框中嘗試指定「重用類型」?該程序集是否包含客戶端應用程序引用的共享類型?由於命名空間,您可能仍然有問題。 – 2012-01-10 17:32:55

+0

這只是一個技術問題,原來的問題仍然存在 – PaulVrugt 2012-01-10 17:34:38

回答

0

這似乎不可能做到這一點。簡短回答:使用wcf服務參考並創建一個共享庫,其中包含服務中使用的類型,並在服務和應用程序中引用它們,參考文獻