簡體   English   中英

在RIA Services客戶端代碼生成中排除服務

[英]Exclude services in RIA Services client code generation

我有一個使用RIA Services 1.0 SP1的Silverlight 4應用程序。

在承載Silverlight應用程序的Web應用程序中,我有一些RIA服務和一個供其他使用者使用的純WCF服務(不是Silverlight應用程序)。

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

如何防止RIA Services為該服務生成客戶端代碼?
我有一個可以用來忽略該服務的屬性嗎?

編輯
我以為是RIA Services嘗試生成代理,但是我不確定。 這是更多信息:

我有以下編譯警告:

服務'MyNamespace.MyWcfService'的客戶端代理生成失敗:錯誤:地址'http:// localhost / Service'的端點'WSHttpBinding_SurveyCentreWcfService'與Silverlight 4不兼容。正在跳過...

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

我的服務類別如下:

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

據我所知,Ria僅從DomainService類生成代碼。 您的WCF服務是從DomainService繼承的嗎?

聽起來像是Silverlight方面的代理代碼生成器。 RIA服務不需要Web參考。 如果Silverlight項目中有Web參考,請將其刪除。

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

可能性很小,但請確保未在Silverlight應用程序中的任何文件上設置自定義工具。

您可能希望使用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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM