SOAP/WSDL/System.Web.Services 和 Windows Phone 8 的问题
本文关键字:Phone 问题 Windows Services WSDL System Web SOAP | 更新日期: 2023-09-27 17:56:42
我有一个旧的WindowsCE手机应用程序。我想为 Windows Phone 8 创建一个类似的应用程序。我最初的计划是重用旧的 C# 代码,尤其是对于业务模型,并为新的 UI/UX 花费新的精力。
我的业务逻辑基于 WSDL SOAP Web 服务。我有一个发布WSDL的java Web服务器,我为旧的Visual Studio添加了一个Web引用,并且两个对等方(客户端/服务器)之间的通信很好。
然而,在Visual Studio 2013中,很多东西都是不同的。特别是缺少一些基本标头。例如,当使用最新的4.5 SDK框架时,可以访问System.Web.Service。
有没有机会重用我的旧代码。我的解决方案中是否可以有两个单独的项目?例如,旧代码可以与主项目分离。是否可以以某种方式创建一个外部库,该库使用旧代码触发 Web 服务并将该库包含在 Windows Phone 8 应用程序中?
有没有机会重用我的旧代码。我的解决方案中是否可以有两个单独的项目?例如,旧代码可以与主项目分离。是否可以以某种方式创建一个外部库,该库使用旧代码触发 Web 服务并将该库包含在 Windows Phone 8 应用程序中?
有些是的,但您必须重写客户端女巫与服务建立连接的大部分部分
我的业务逻辑基于 WSDL SOAP Web 服务。我有一个发布WSDL的java Web服务器,我为旧的Visual Studio添加了一个Web引用,并且两个对等方(客户端/服务器)之间的通信很好。
如果您在ServiceReference和视图之间已经有一个层,则可以将该层移植为接口,并在WP8(甚至可能是可移植的)类库中实现,以便您可以在WP8项目中使用它
特别是缺少一些基本标头。
您可以使用
公共类 SoapHeader : MessageHeader { protected override void OnWriteStartHeader(XmlDictionaryWriter writer, MessageVersion messageVersion) { 基础。OnWriteStartHeader(writer, messageVersion); }
protected override void OnWriteHeaderContents(XmlDictionaryWriter writer, MessageVersion messageVersion)
{
writer.WriteStartElement("xx");
writer.WriteXmlAttribute("xmlns", "http://xx");
writer.WriteString("xx");
writer.WriteEndElement();
}
SoapHeader authSoapdHd = new SoapHeader(); BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
MyPrintWebServiceSoapClient ws = new MyPrintWebServiceSoapClient();
ws.ChannelFactory.Endpoint.Address = new EndpointAddress(new Uri(xxx.asmx"));
ws.InnerChannel.OperationTimeout = TimeSpan.FromMilliseconds(6000);
using (OperationContextScope scope = new OperationContextScope(ws.InnerChannel))
{
OperationContext.Current.OutgoingMessageHeaders.Add(authSoapdHd);
ws.LogInCompleted += ws_LogInCompleted;
LogInRequest request = new LogInRequest(xxx, yyy);
ws.LogInAsync(request);
}