【发布时间】:2018-05-29 08:25:59
【问题描述】:
我正在用 C# 创建一个战舰游戏。对于这个游戏,我目前有 3 个项目:
- 代表客户端的 WPF 应用程序
- 一个 ASP.NET MVC 应用程序,用作客户端登录并相互开始游戏的大厅
- 一个 WCF 服务,托管在其中两个应用程序可以用来相互通信。
在 WPF 和 MVC 应用程序中,都会为 WCF 服务创建服务引用。但是,两个应用程序中的服务引用看起来不同。 顺便说一句,该服务还实现了回调服务。
在 WPF 应用程序中,我可以简单地创建一个服务客户端并将当前实例上下文添加为调用回调服务的实例:
var instanceContext = new InstanceContext(this);
lobbyserviceClient = new LobbyServiceClient(instanceContext);
而且服务运行良好。
但是在 MVC 应用程序中,服务引用具有完全不同的构造函数,它们似乎都不能正常工作。下面是引用文件的示例:
public LobbyServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
this(new LobbyServiceClientCallback(), binding, remoteAddress)
{
}
private LobbyServiceClient(LobbyServiceClientCallback callbackImpl, System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
base(new System.ServiceModel.InstanceContext(callbackImpl), binding, remoteAddress)
{
callbackImpl.Initialize(this);
}
以前有没有人遇到过这个问题,或者可能看到有问题并知道解决方案。
附言同样在尝试使用如上所示的第一个构造函数时。在我的 system.servicemodel 命名空间中只有 BasicHTTPBinding 可用,而在 WCF 服务中使用了 WSDualHttpBinding,这就是尝试使用此构造函数时抛出错误的原因
【问题讨论】:
-
抱歉不知道,但您的项目描述驱动如下;我最好用 websocket(而不是 wcf)制作一个 web api,并且没有 MVC/ASP 应用程序......?!?!再见
-
谢谢,我也会做一个不同的结构,但它是一个学校项目,需要我们这样做:(
-
好的。一个提示:使用 WCF 不要使用视觉的“添加 Web 引用”。制作 2 个程序集/项目,在其中定义具有 ServiceContract 属性的服务接口和具有 [DataContract]-[DataMember] 属性的模型。然后在客户端项目中添加项目引用。
标签: c# asp.net-mvc wpf wcf