另一个项目中端点的WCF配置

我在一个解决方案中有两个项目。 一个项目,我们称之为MainProject,成为一个可执行文件。 另一个项目,我们称之为ControlsProject,包含UserControl的并在MainProject中被引用(和使用)。 ControlsProject也有一个WCF服务参考。

我有两个有关此配置的问题:

  • 我可以将WCF配置从ControlsProject复制到MainProject(我不相信我可以通过“如何在其他项目中包含Web引用端点配置”)
  • 在ControlsProject配置中,合同没有完全限定的名称空间,而是具有诸如“ ServiceName.IServiceInterfaceName ”之类的名称。 由于ControlsProject输出将是位于MainProject的bin文件夹中的文件,因此合同名称应该是什么?
  • 我试过只是复制了配置,但收到了异常:“ Could not find default endpoint element that references contract 'MyService.IMyService' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element. “当我复制配置时,我将接口的名称完全限定为ControlsProject.MyService.IMyService

    您可以提供的任何帮助表示赞赏!

    更新 (2011年7月14日下午5点28分)

    这是我的客户端app.config中的代码片段:

    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IStatService" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://intranet/StatService.svc"
                binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IStatService"
                contract="StatService.IStatService" name="BasicHttpBinding_IStatService" />
        </client>
    </system.serviceModel>
    

    这是我的web服务web.config中的代码片段:

    <system.serviceModel>
      <behaviors>
        <serviceBehaviors>
          <behavior name="">
            <serviceMetadata httpGetEnabled="true" />
            <serviceDebug includeExceptionDetailInFaults="true" />
          </behavior>
        </serviceBehaviors>
      </behaviors>
      <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    </system.serviceModel>
    

    任何时候当你看到“无法找到这样和那样的合同的默认端点元素”时,你的实际合约(接口)在app.config文件中没有被正确地引用。 转到控制项目中的接口契约,再次检查它所在的名称空间,需要确切的名称空间。“接口名称”作为app.config中的契约元素。 您还需要确保您的服务名称= Namespace.MyService是正确的命名空间和类。 知道你是否正确的一种简单方法(只有当你有resharper时),在你声明服务名的appconfig中=把光标放在服务名和命名空间上,然后按F12,如果它没有把你带到任何地方你引用了一个不存在的命名空间和类,对于contract =,也是如此,如果你的F12在那个合同上,并且它不会把你带到那里,那么它没有被正确地引用(可能拼写错误)。

    链接地址: http://www.djcxy.com/p/87191.html

    上一篇: WCF Configuration for Endpoint in Another Project

    下一篇: WCF Default Endpoint not found