我想创建一个WCF服务,用于我的ASP.Net网站(不是项目),该网站没有代码隐藏文件,这是传统的asmx样式服务的一个选项,但不会出现 用于wcf服务,或者将其代码存储在单独的代码项目中,并且只是由svc文件公开。
我尝试将代码文件从app_code移动到我的单独项目中,但无法弄清楚如何链接它们,因为从svc文件中删除codebehind属性会立即引发错误。
答案 0 :(得分:6)
您可以将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
实现了它们。
我希望这有帮助!
答案 1 :(得分:0)
这是一个视频,演示了如何以(我认为)允许您执行您所询问的方式实现WCF。您可以分离合同,服务等,以便轻松重复使用您的服务。您需要能够添加引用,因此将网站转换为Web应用程序可能是最好的选择。这样可以将您的服务保存在一个单独的项目中,并在引用您的服务项目dll之后将其公开在您的Web应用程序中。