2011-03-18 53 views
2

我有一個使用RIA Services 1.0 SP1的Silverlight 4應用程序。排除RIA Services客戶端代碼生成服務

在承載Silverlight應用程序的Web應用程序中,我有幾個RIA服務和一個純WCF服務,用於其他客戶(而不是Silverlight應用程序)。

RIA Services正在嘗試(和失敗)在Silverlight應用程序中生成客戶端代理代碼以調用WCF服務。我不需要從Silverlight調用該服務。

如何防止RIA服務爲該服務生成客戶端代碼?
我有一個屬性,我可以使用忽略該服務?

編輯
我是假設,這將是RIA服務嘗試生成代理,但我不知道。下面是詳細信息:

我有以下彙編警告:

客戶端代理生成服務「MyNamespace.MyWcfService」失敗:錯誤:端點地址是「WSHttpBinding_SurveyCentreWcfService」的「http://本地主機/服務」不兼容Silverlight 4.跳過...

我沒有在我的Silverlight應用程序中手動添加任何服務引用,但WCF RIA服務鏈接在項目屬性中設置。

我的服務類看起來是這樣的:

[ServiceContract] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
[ServiceBehavior(Namespace = "http://www.xxx.com/services/")] 
public class MyWcfService 
{ 
    ... 
} 

回答

0

RIA,據我所知,只能從的DomainService類生成的代碼。您的WCF服務是否繼承自DomainService?

這種類似的聲音可能是silverlight方面的代理代碼生成器。 RIA服務不需要Web引用。如果您在silverlight項目中有Web引用,請將其刪除。

此外,您可以在build.log文件中看到哪些代理生成工具正在查看哪些文件。解密有點困難,但它可能有助於解決您的問題。

非常不可能,但請確保沒有自定義工具在您的Silverlight應用程序中的任何文件上設置。

+0

無它沒有。它只是一個標有'[ServiceContract]'的類,並帶有匹配的'.svc'文件。 – 2011-03-18 02:33:07

+0

它上面可能有一個[EnableClientAccess]標籤嗎? – 2011-03-18 02:35:33

+0

Nop。用更多細節更新我的問題。 – 2011-03-18 02:53:08

0

你可以看看使用DomainServiceHostFactory來限制哪些請求可以發起什麼樣的服務,下面的例子:

public class RestrictedServiceHost : DomainServiceHostFactory 
{ 
    private static List<string> _allowedSchemes; 

    static RestrictedServiceHost() 
    { 
     RestrictedProtocolServiceHost._allowedSchemes = new List<string>(); 
     RestrictedProtocolServiceHost._allowedSchemes.Add(Uri.UriSchemeHttp); 
     RestrictedProtocolServiceHost._allowedSchemes.Add(Uri.UriSchemeHttps); 
    } 

    protected override ServiceHost CreateServiceHost (Type serviceType, Uri[] baseAddresses) 
    { 
     baseAddresses = baseAddresses.Where(uri => RestrictedProtocolServiceHost._allowedSchemes.Contains(uri.Scheme)).ToArray(); 
      return base.CreateServiceHost(serviceType, baseAddresses); 
    } 
} 

你那麼如果用你的web.config這樣的:

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"> 
     <serviceActivations> 
     <add service="RIA.FooDomainService" 
      relativeAddress="Services/FooProject-FooDomainService.svc" 
      factory="YourWebProject.RestrictedProtocolServiceHost"/> 
     </serviceActivations> 
    </serviceHostingEnvironment> 
+0

對不起,遲到的迴應 - 我不確定我是否明白你的觀點,我有一個編譯時間代理代碼生成問題,這將如何幫助? – 2011-03-28 00:53:06

相關問題