【问题标题】:ASP.Net WCF Service with no App_Code没有 App_Code 的 ASP.Net WCF 服务
【发布时间】:2011-03-08 17:20:28
【问题描述】:

我想创建一个 WCF 服务以在我的 ASP.Net 网站(不是项目)上使用,该网站或者没有代码隐藏文件,这是传统 asmx 样式服务的一个选项,但没有出现 em> 用于 wcf 服务,或者将其代码存储在单独的代码项目中,并由 svc 文件公开。

我尝试将代码文件从 app_code 移动到我的单独项目中,但无法弄清楚如何链接它们,因为从 svc 文件中删除 codebehind 属性会立即引发错误。

【问题讨论】:

  • 这就是为什么不将网站用于严肃的工作。顺便说一句,使用网络服务是一项严肃的工作。
  • 如果您想在您的网站之外托管/隔离服务,您可能应该考虑构建一个 WCF 服务应用程序。

标签: asp.net wcf


【解决方案1】:

您可以让 Web 项目中的 SVC 文件指向包含在单独 DLL 中的类。您不必在 App_Code 目录中包含您的 SVC“代码隐藏”。这很容易做到。您的 SVC 文件只需要有一个属性 - Service。这是我在工作场所使用的一个示例:

<%@ ServiceHost Service="My.Qualified.Service.Class.Name" %>

我在 App_Code 文件夹中没有任何代码。此 SVC 的所有逻辑都包含在一个单独的 DLL 中(恰好是 My.Qualified.Service.Class.dll)。我的服务名称是实现类的名称;这是唯一的警告。

我的 web.config(在 system.serviceModel 内)像这样引用这个服务:

<service name="My.Qualified.Service.Class.Name">
    <endpoint address=""
     binding="webHttpBinding"
     contract="My.Qualified.Service.Class.IName" />
</service>

之后我的服务逻辑是直接的 WCF 代码。我的IName 接口定义了我的操作; Name 实现了它们。

我希望这会有所帮助!

【讨论】:

  • 这看起来不错,除了...无论如何我可以摆脱在 web.config 中没有引用的情况(就像你可以使用 asmx 文件一样)?好吧,asmx 文件有一种全局条目
  • 嗯...自从我使用 asmx 文件以来已经有一段时间了。我想您可以在代码中配置 WCF 服务。只是好奇,为什么不想在配置中配置服务?
  • 我们有一个单独的 ASP.Net 网站,我们称之为“shell”。我们在这个 shell 中“托管”了几个自定义实用程序/应用程序。它们都共享一个基本的母版页、app_theme、日志记录/安全功能等...由于此代码由多个开发人员维护并支持许多系统,我们尝试使每个应用程序尽可能独立(保留所有页面、用户控件、 Web 服务在一个文件夹中)。 DLL 仍然在 Bin 目录中,但这与我们的重叠程度差不多。
【解决方案2】:

这是一个视频,演示了如何以一种(我认为)允许您做您所要求的事情的方式实现 WCF。您可以分离您的合同、服务等,以便您可以轻松地重用您的服务。您需要能够添加引用,因此将网站转换为 Web 应用程序可能是最好的选择。这将允许将您的服务保留在一个单独的项目中,并在引用您的服务项目 dll 后简单地将其公开在您的 Web 应用程序中。

http://www.dnrtv.com/default.aspx?showNum=122

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-05
    • 2014-05-18
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多