我正在研究与Wcf样本的NServiceBus集成:
WcfIntegration sample on github
我想用第二种方法扩展ICancelOrderService:
[ServiceContract]
public interface ICancelOrderService
{
[OperationContract]
ErrorCodes Process(CancelOrder request);
[OperationContract]
ErrorCodes ProcessAnotherMessage(PlaceOrder request);
}
据我了解,我应该添加来自WcfService的新服务
public class PlaceOrderService : WcfService<CancelOrder, ErrorCodes>
{
}
和相应的PlaceOrderHandler:
public class PlaceOrderHandler : IHandleMessages<PlaceOrder>
{
private readonly IBus bus;
public PlaceOrderHandler(IBus bus)
{
this.bus = bus;
}
public void Handle(PlaceOrder message)
{
Console.WriteLine("===========PLACE ORDER message============");
if (message.OrderId % 2 == 0)
bus.Return((int)ErrorCodes.Fail);
else
bus.Return((int)ErrorCodes.None);
}
}
服务器的app.config包含以下配置:
<services>
<service name="Server.WebServices.CancelOrderService" behaviorConfiguration="Default">
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:9009/services/cancelOrder" />
</baseAddresses>
</host>
</service>
</services>
问题:
似乎服务合同(Process或ProcessAnotherMessage)中的方法名称被NServiceBus忽略 - 我没有看到任何使用方法名称只使用TRequest / TResponse类型参数:
CancelOrderService:WcfService&lt; CancelOrder ,错误代码&gt;
我认为这种方式过于谨慎 - 对于我要发送的每个新方法/消息,都会创建新的WcfService类型,处理程序并配置app.config。我错过了什么吗?
答案 0 :(得分:0)
可以使用VS工具设置第二个端点的配置 - wcf配置工具:右键单击app.config - &gt;编辑wcf配置 - &gt;创建新服务并按照向导步骤设置新端点。
也this video (WCF using C#: Building your first WCF application) 可能很有用(端点设置在30-35分钟)