大家好我在我的应用程序中遇到了一个关于dualHttpBinding和webHttpBinding的问题。这是整体情景
我有一个dotNet和Android应用程序,它使用WCF服务(有三种不同的绑定)。
1. basicHttpBinding - For dotNet app (Service1.svc)
2. webHttpBinding - For Android to access via Rest full service (Service2.svc)
3. dualHttpBinding - For push notification to dotNet app(PushServie.svc)
当Android应用程序使用Servie2中的方法(AddOrderItems)时 - 它会插入到数据库中,并在inturn中显示dotNet应用程序中的消息(推送通知)。为此,我在PushService中使用了CallBackContract,当我尝试从dotNet应用程序访问AddOrderItems方法(在Servie2中)时(我出于测试目的)并且通知消息即将到来,它正常工作。
但我的问题是如何才能知道是否以及何时从Android应用程序调用我的AddOrderItems,以便我必须在dotNet应用程序中显示消息(通过CallBackContract)。
我尝试在调用AddOrderItems方法之后从Servie2.svc调用PushServie.svc方法(CallBackMessagge),但根本没有运气。
以下是Service2和PushService.svc的代码,
// AddOrderItems method in IService2 which is implemented in Servie2.svc
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "AddOrderItems", RequestFormat =
WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare)]
bool AddOrderItems(RequestOrderItemData orderItemData);
并在IPushService中回调方法,该方法在PushService.svc
中实现 [OperationContract(IsOneWay = true)]
void DisplayMessage(int orderID, int tableID, string tableName);
以下是PushService中DisplayMessage的代码
IPushNotificationCallBack Callback
{
get
{
return
OperationContext.Current.GetCallbackChannel<IPushNotificationCallBack>();
}
}
和PushService.svc中的方法
public void DisplayMessage(int orderID, int tableID, string tableName)
{
Callback.DisplayMessage(orderID, tableID, tableName);
}
我试图用谷歌搜索,每个人都说webHttpBindin不支持回调功能。
我担心的是我想从AddOrderItems调用我的DisplayMessage方法。如果可以进行任何修改,我真的很高兴。
据我所知,我已经发布了所有必要的代码,如果有其他需要,请告诉我,我会发布。
任何帮助都非常感谢。
温馨的问候, 内甚