WCF端点合约名称——如果是通用的如何分配它?

发布于 2024-11-16 18:20:58 字数 1269 浏览 3 评论 0原文

  • IGenericService 驻留在名为“ABC.Server.Common”(ABC.Server.Common.dll) 的程序集中
  • MyType 驻留在名为“ABC.Server.Modules.X”(ABC.Server.Modules.X.dll) 的程序集中

代码:

public class ABC.Server.Modules.XService :
    ABC.Server.Common.IGenericService<ABC.Server.Module.X.MyType>
{
    ABC.Server.Common.GenericResponse<ABC.Server.Module.X.MyType> DoFoo(ABC.Server.Common.GenericRequest<ABC.Server.Module.X.MyType> request)
    {
        //Do Stuff Here
    }
}

精简代码:

public class XService :
    IGenericService<MyType>
{
    GenericResponse<MyType> DoFoo(GenericRequest<MyType> request)
    {
        //Do Stuff Here
    }
}

Web.config:
我不使用 SVC 文件,而是在 Web.config 中处理该信息:

<add factory="System.ServiceModel.Activation.ServiceHostFactory"
     relativeAddress="Services/X.svc"
     service="ABC.Server.Modules.X.XService"/>

<service name="ABC.Server.Modules.X.XService"
         behaviorConfiguration="StandardBehavior">
  <endpoint bindingConfiguration="StandardBinding"
            binding="basicHttpBinding"
            contract="?" />
</service>

我应该在合约名称中放入什么才能使其实际工作?

  • IGenericService resides in the Assembly Named: "ABC.Server.Common" (ABC.Server.Common.dll)
  • MyType resides in the Assembly Named: "ABC.Server.Modules.X" (ABC.Server.Modules.X.dll)

CODE:

public class ABC.Server.Modules.XService :
    ABC.Server.Common.IGenericService<ABC.Server.Module.X.MyType>
{
    ABC.Server.Common.GenericResponse<ABC.Server.Module.X.MyType> DoFoo(ABC.Server.Common.GenericRequest<ABC.Server.Module.X.MyType> request)
    {
        //Do Stuff Here
    }
}

Condensed Code:

public class XService :
    IGenericService<MyType>
{
    GenericResponse<MyType> DoFoo(GenericRequest<MyType> request)
    {
        //Do Stuff Here
    }
}

Web.config:
I don't use SVC files, instead I have that information taken care of in the Web.config:

<add factory="System.ServiceModel.Activation.ServiceHostFactory"
     relativeAddress="Services/X.svc"
     service="ABC.Server.Modules.X.XService"/>

<service name="ABC.Server.Modules.X.XService"
         behaviorConfiguration="StandardBehavior">
  <endpoint bindingConfiguration="StandardBinding"
            binding="basicHttpBinding"
            contract="?" />
</service>

What do I put in the contract name to get it to actually work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤云独去闲 2024-11-23 18:20:58

一般来说,您可以使用以下代码片段了解 WCF 期望您为 ContractName 添加什么内容:

ContractDescription.GetContract(typeof(IGenericService<MyType>)).ConfigurationName

In general you can learn what WCF is expecting you to put for the ContractName with the following code snippet:

ContractDescription.GetContract(typeof(IGenericService<MyType>)).ConfigurationName
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文