WCF Silverlight启用服务“;“未找到”;错误

WCF Silverlight启用服务“;“未找到”;错误,wcf,silverlight,service,web,Wcf,Silverlight,Service,Web,我正在与以下场景作斗争(这里是一幅大图): 我的Web项目中有一个支持WCF Silverlight的服务(基于DomainService类)。该服务旨在由Silverlight 5客户端和非Silverlight用户调用 该服务在地址处显示WSDL信息 "http://localhost/mywebapproot/Services/MailService.svc“因此它可以 由Web中的任何客户端发现和实现 项目(这很好) 以下是症状: 任何人都无法调用该服务 Silverlight客户端(问

我正在与以下场景作斗争(这里是一幅大图):

我的Web项目中有一个支持WCF Silverlight的服务(基于DomainService类)。该服务旨在由Silverlight 5客户端和非Silverlight用户调用

该服务在地址处显示WSDL信息 "http://localhost/mywebapproot/Services/MailService.svc“因此它可以 由Web中的任何客户端发现和实现 项目(这很好)

以下是症状:

  • 任何人都无法调用该服务 Silverlight客户端(问题就在这里!)返回的错误是“远程服务器返回了异常:找不到”。如果我更改了 Web.Config中的服务(假设我更改了 MyCompany.Web.Services.MailService转换为MailService),该服务可以 现在可以由任何Silverlight客户端调用,但此时服务 已经无法发现
  • 我将includeExceptionDetailInFaults设置为True,并尝试使用Fiddler/HTTPDebuggerPro检查服务,但他们没有提供有关异常的任何详细信息。在我看来,Silverlight客户端在这种配置下,由于某种原因,无法动态创建.SVC文件

    以下是实施方案:

    MailService.svc实现

    MailService.svc.cs实现

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public sealed partial class MailService : DomainService, IMailService
    {
    }
    
    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="Secure_Behavior_Configuration">
                    <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
                    <serviceDebug includeExceptionDetailInFaults="true" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <bindings>
            <basicHttpBinding>
                <binding name="Public_MailService_BasicHttpBinding" transferMode="Streamed"
                            maxBufferSize="2147483647"
                            maxReceivedMessageSize="2147483647"
                            maxBufferPoolSize="2147483647">
    
                    <readerQuotas maxArrayLength="21400000" maxStringContentLength="21400000" maxBytesPerRead="21400000"/>
                    <security mode="None"/>
                </binding>
            </basicHttpBinding>
          <services>
            <service name="MyCompany.Web.Services.MailService" behaviorConfiguration="Secure_Behavior_Configuration">
                <endpoint
                    address="" 
                    binding="basicHttpBinding" 
                    bindingConfiguration="Public_MailService_BasicHttpBinding"
                    contract="MyCompany.Web.Services.IMailService" />
                <endpoint
                    address=""
                    binding="basicHttpBinding"
                    bindingConfiguration="Secure_MailService_BasicHttpBinding"
                    contract="MyCompany.Web.Services.IMailService" />
                <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
            </service>
        </services>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    </system.serviceModel>
    
    iMail服务接口

    [ServiceContract(ConfigurationName = "MyCompany.Web.Services.IMailService")]
    public interface IMailService
    {
       //Some public methods flagged as [OperationContract] go here
    }
    
    Web.Config实现

    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public sealed partial class MailService : DomainService, IMailService
    {
    }
    
    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="Secure_Behavior_Configuration">
                    <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
                    <serviceDebug includeExceptionDetailInFaults="true" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <bindings>
            <basicHttpBinding>
                <binding name="Public_MailService_BasicHttpBinding" transferMode="Streamed"
                            maxBufferSize="2147483647"
                            maxReceivedMessageSize="2147483647"
                            maxBufferPoolSize="2147483647">
    
                    <readerQuotas maxArrayLength="21400000" maxStringContentLength="21400000" maxBytesPerRead="21400000"/>
                    <security mode="None"/>
                </binding>
            </basicHttpBinding>
          <services>
            <service name="MyCompany.Web.Services.MailService" behaviorConfiguration="Secure_Behavior_Configuration">
                <endpoint
                    address="" 
                    binding="basicHttpBinding" 
                    bindingConfiguration="Public_MailService_BasicHttpBinding"
                    contract="MyCompany.Web.Services.IMailService" />
                <endpoint
                    address=""
                    binding="basicHttpBinding"
                    bindingConfiguration="Secure_MailService_BasicHttpBinding"
                    contract="MyCompany.Web.Services.IMailService" />
                <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
            </service>
        </services>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    </system.serviceModel>
    
    
    
    非常感谢你的帮助! 克里斯