首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从其他项目引用ServiceContract

从其他项目引用ServiceContract
EN

Stack Overflow用户
提问于 2013-04-11 01:08:33
回答 2查看 677关注 0票数 0

我已经搜索了一整天,这里和其他地方,所以请原谅任何冗余,但是,我正在尝试做我收集到的应该是简单的,并且推荐的WCF服务架构的方法。

这个场景是一个服务,为多个ServiceContracts服务,每个服务都在它自己的项目中。

我开始很简单;在我的解决方案中,我有一个WCF ServiceLibrary和一个类库,只有一个默认的配置文件。

解决方案中还有一个名为WCF_Sandbox.Greeting的项目。程序集名称为WCF_Sandbox.Greeting.dll

该项目中有一个类IGreeting (修饰为ServiceContract)和一个实现类问候。

我是,真的是,很难通过WCF_Sandbox服务公开IGreetingSayHello()方法。

我一直拿着

“此服务未在.实施的服务中列出”

错误,或错误

没有元数据可用。

如果有人能建议如何从另一个项目中获得服务以出现在WCF_Sandbox服务中,我将非常感激。这似乎是一个许多人都在努力解决的基本问题,我还没有看到这个问题在任何地方都得到了直截了当的回答。非常感谢!

代码语言:javascript
复制
app.config file. System.Configuration does not support config files for libraries. -->
<system.serviceModel>
<services>
  <service name="WCF_Sandbox.Service1">
    <host>
      <baseAddresses>
        <add baseAddress = "http://localhost:8733/Design_Time_Addresses/WCF_Sandbox/Service1/" />
      </baseAddresses>
    </host>
    <endpoint address="" binding="basicHttpBinding" contract="WCF_Sandbox.IService1">
      <identity>
        <dns value="localhost"/>
      </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
      <serviceDebug includeExceptionDetailInFaults="False" />
    </behavior>
  </serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
EN

回答 2

Stack Overflow用户

发布于 2013-04-11 04:31:47

正如@Tim提到的,代码可能很有用。

我建议采取以下步骤:

1)。确保项目参考(@Tim建议)-我想你已经做了

2)。也许我错了,但是如果您的服务合同是IGreeting,那么端点应该包含IGreeting而不是Service1,看起来就像

..。端点contract="WCF_Sandbox.IGreeting“address=”binding=“basicHttpBinding

3)。确保契约属性具有完全限定的接口名称(即完全命名空间+接口名称)。

4)。尝试使用WCF配置工具(可从Visual >菜单获得)手动选择合同,然后查看配置文件。

票数 0
EN

Stack Overflow用户

发布于 2013-04-12 06:22:33

我想我理解您想要完成的任务--您希望通过库将服务与其他代码分离--这一切都很好,但我认为您有一些基本的误解。我不知道你的总体经验是什么,所以如果我说的是你已经知道或理解的东西,请原谅我。

首先,库不是可执行代码。使用库(据我所知)的唯一方法是让一个正在执行的程序使用它。它们提供了一种在多个应用程序之间共享代码的方法,而不需要多个源代码副本。在WCF术语中,这是将合同与宿主应用程序分离开来的一种方式。

因此,在您的例子中,听起来您已经创建了这个库(顺便说一句,way 就是一个类库--它只是一个不同的项目模板,可以帮助您启动并使用WCF运行)。

接下来您需要做的是托管服务。您可以通过IIS、Windows服务或自托管应用程序来完成此操作.例如,如果要在IIS中承载服务,则将包含服务的库(DLL)放在虚拟目录/应用程序的bin文件夹中,您计划在该文件夹中承载该服务。然后,在虚拟目录/应用程序的根目录中为服务添加一个*.svc文件,并将ServiceModel部分从默认的app.config文件复制到web.config文件。

要使用该服务,可以通过Visual (在将使用该服务的项目中)添加服务引用,也可以通过SvcUtil生成代理并将其包含在客户端项目中。

总之,如果我正确理解你的设置,你就会半途而废。您只需要托管该服务,然后编写一个客户端来使用它。

有很多事情我没有在这里讨论--这只是我认为你想要做的事情的一种方式。

我强烈建议浏览微软的入门教程,特别是关于托管和创建客户端的部分。

我希望这能消除你的一些困惑-- WCF在许多不同的选项和口味上都很棒,但是它也可以有一个陡峭的学习曲线。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15939161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档