2013-12-08 64 views
1

我正在開發一個小型即時消息應用程序,它使用服務器端的幾個DomainServices。嘗試訪問域服務URL時,遇到以下錯誤:WCF RIA服務域服務錯誤:ContractDescription具有零操作;合同必須至少有一個操作

「ContractDescription'AppInitService'具有零操作;合同必須至少有一個操作」。

域名服務URL是這個: http://givemeword.net/chat/Services/IM-Chat-UI-Web-DomainServices-AppInitService.svc

您可以找到下面的域服務類:

namespace Chat.UI.Web.DomainServices 
{ 
    [EnableClientAccess()] 
    public class AppInitService : DomainService 
    { 
     private System.Security.Principal.IPrincipal _user; 
     private readonly Chat.UI.Web.Services.AppInitService _appInitService; 

     public AppInitService() 
     { 
      _appInitService = new Chat.UI.Web.Services.AppInitService(); 
     } 

     public InitUserSettingsDTO InitUserSettings(Guid userId) 
     { 
      var initUserSettingsDTO = new InitUserSettingsDTO(); 

      return initUserSettingsDTO; 
     } 
    } 
} 

正如你所看到的,我使用的是複雜類型的返回類型域服務的唯一功能。

我無法弄清的是,爲什麼在測試Windows Server 2012(不是開發機器,只是用於測試的虛擬機)或我的開發機器上運行沒有任何問題,而是在其提升的主機帳戶上上面的錯誤。

有沒有人有這方面的想法?

謝謝

回答

1

嘗試添加[調用]屬性您InitUserSettings方法:

[Invoke] 
    public InitUserSettingsDTO InitUserSettings(Guid userId) 
    { 
     var initUserSettingsDTO = new InitUserSettingsDTO(); 

     return initUserSettingsDTO; 
    } 

確保你的web.config設置如下所述:http://msdn.microsoft.com/en-us/library/ff426912(v=vs.91).aspx

+0

感謝您的回覆。我會檢查提供的網址。問題仍然存在:爲什麼它在我的機器上工作?我懷疑它是沒有安裝在主機帳戶上的是WCF RIA Services V1.0 SP1或SP2。 – Razvan

+0

服務響應的事實讓我覺得你的設置沒問題。 RIA服務旨在返回對象圖中的「實體」對象。如果您的dto沒有關鍵屬性,那麼它是一個poco,並且該服務方法需要使用invoke屬性進行修飾才能起作用。 –

+0

再次感謝你羅布。 web.config一切都很好。將[Invoke]屬性添加到域類中的虛擬函數確實解決了訪問其Url的問題。但試圖訪問返回複雜類型的函數仍然導致客戶端的「未找到」錯誤。 – Razvan

0

正在激怒用這種奇怪的情況和我從網絡託管公司得到的低支持,我已經嘗試過與其他網絡提供商相同的事情。正如我想的那樣,這次沒有任何問題,所以我假設原始提供商對WCF RIA服務的支持不足(或者其他未知問題)是正確的。