2014-01-14 32 views
0

創建服務後,我嘗試將它作爲另一個項目中的引用添加。我這樣做,它創建了客戶端,但我只看到我的服務的方法,而不是它應該生成的自定義類型。僅WSDL中沒有生成的類型WCF 4.5中的方法

例如,我添加了一個服務引用諸如http://ourdomain.com/Payment.svc

我應該引用http://ourdomain.com/Payment.svc?wsdl?singlewsdl作爲服務參考URL?

請注意,如果我通過http://ourdomain.com/Payment.svc?singlewsdl添加服務引用,它不會生成客戶端,但我可以在創建的Reference.cs中看到類型。

+0

在哪個項目中定義的類型。 Ar服務器項目中定義的數據合同還是單獨的項目? –

+0

這些類型是用作服務操作的參數還是返回值?這些是將在WSDL中描述的唯一類型。你在WSDL/XSD中看到這些類型嗎? –

回答

0

兩個選項?wsdl?singlewsdl將產生一個等效的服務描述WSDL文檔。區別在於?wsdl將「類型」(C#中的類)定義分隔爲多個XSD文件,並且?singlewsdl生成包含服務描述和XSD定義的單個文件。在Visual Studio中,使用哪個選項沒有區別。如果您使用的是SvcUtil(或其他平臺工具),那麼使用單個文件生成代理會更容易。實際上,一些較老的工具需要一個文件。

您的「問題」實際上可能是代碼生成功能。打開服務參考配置對話框(右鍵單擊它並選擇「配置服務」)爲您的服務。您會看到默認情況下通常會顯示的選項:重複使用引用程序集中的類型所有引用的程序集中的重用類型可能也會被檢查。這些選擇將阻止 Reference.cs文件包含任何類型(如果它們已在其他程序集中引用)。一般來說,你應該保留這些選項要在創建服務引用時對其進行控制,請單擊添加服務引用對話框中的高級按鈕(左下角)以查看配置選項。