C# SOAP/WSDL/System.Web.Services和Windows Phone 8存在问题

C# SOAP/WSDL/System.Web.Services和Windows Phone 8存在问题,c#,visual-studio,soap,windows-phone-8,wsdl,C#,Visual Studio,Soap,Windows Phone 8,Wsdl,我有一个旧的WindowsCE手机应用程序。我想为Windows Phone 8创建一个类似的应用程序。我最初的计划是重用我的旧C#代码,特别是用于业务模型,并为新的UI/UX付出新的努力 我的业务逻辑基于WSDL SOAP web服务。我有一个发布WSDL的javaweb服务器,我向旧的visualstudio添加了一个web引用,两个对等方(客户机/服务器)之间的通信很好 然而,在VisualStudio2013中,很多事情是不同的。特别是缺少一些基本标头。例如,当使用最新的4.5 SDK框

我有一个旧的WindowsCE手机应用程序。我想为Windows Phone 8创建一个类似的应用程序。我最初的计划是重用我的旧C#代码,特别是用于业务模型,并为新的UI/UX付出新的努力

我的业务逻辑基于WSDL SOAP web服务。我有一个发布WSDL的javaweb服务器,我向旧的visualstudio添加了一个web引用,两个对等方(客户机/服务器)之间的通信很好

然而,在VisualStudio2013中,很多事情是不同的。特别是缺少一些基本标头。例如,当使用最新的4.5 SDK框架时,可以访问System.Web.Service

是否有机会重用我的旧代码。我的解决方案中可以有两个独立的项目吗?例如,旧代码可以与主项目解耦。是否可以创建一个外部库,用旧代码触发web服务,并将该库包含在Windows Phone 8应用程序中

是否有机会重用我的旧代码。我的解决方案中可以有两个独立的项目吗?例如,旧代码可以与主项目解耦。是否可以创建一个外部库,用旧代码触发web服务,并将该库包含在Windows Phone 8应用程序中

有些是的,但是您必须重新编写客户端交换机的大部分内容,以便连接到服务

我的业务逻辑基于WSDL SOAP web服务。我有一个发布WSDL的javaweb服务器,我向旧的visualstudio添加了一个web引用,两个对等方(客户机/服务器)之间的通信很好

如果您已经在ServiceReference和视图之间有一个层,那么您可以将该层作为接口进行移植,并在WP8类库(甚至可能是可移植的)中进行实现,以便您可以在WP8项目中使用它,尤其是缺少一些基头

你可以用

公共类SoapHeader:MessageHeader { 受保护的重写无效OnWriteStartHeader(XmlDictionaryWriter编写器,MessageVersion MessageVersion) { base.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=新SoapHeader(); BasicHttpBinding=新的BasicHttpBinding(BasicHttpSecurityMode.None)


@verdesrobert能否请您进一步详细说明?您是否需要其他信息?您是否可能发布服务和/或客户端实现的某些部分请查看以下线程:
            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);
            }