Tag: web services

列表跨Web服务变为Country

我有一个Web服务,在调用时,返回一个多态包含List的Result对象。 但是,当我在客户端应用程序中添加引用时,公共字段将成为客户端应用程序中的Country数组。 如何将客户端应用程序中的字段更改为List? public Result GetCountryList() { List countries = GrabCountryList(); Result result = new Result(); result.theResult = countries; } 这是公共财产 public object theResult { get {return _theResult; } set {_theResult = value;} } Mehmet Aras的公认接受的答案 : 右键单击服务引用,然后选择“配置引用”。 在Collection type下,选择System.Collection.Generic.List。 更新服务参考,应该是好的。 感谢Matt Hamilton提出的从arrays创建新列表的建议。

WebService和Remoting之间的区别

我将Web服务与Remoting从性能和互操作性角度进行了比较,并对此有所怀疑。 1)由于Remoting支持TCP和HTTP通道,因此在使用TCP通道时它使用二进制格式化,当HTTP,SOAP格式化时 2)我们可以在Remoting中使用TCP协议和HTTP / Soap格式化使用二进制格式化 3)由于Remoting支持任何技术和平台普遍接受的XML / SOAP格式,因此它应该提供任何技术/平台的服务器/客户端应用程序之间的互操作性,如果提供什么是Web服务的使用。 据我所知,Webservice相对于远程处理的主要优点是互操作性。 4)如果我使用Remoting与SOAP和HTTP,它是否被互联网防火墙绕过与Web服务相同的方式,或者仍然受到防火墙的限制。 5)如果在HTTP上使用SOAP格式进行远程处理,而在Web服务上使用SOAP格式通过Http进行远程处理,是否仍存在任何性能变化。 6)webservice是否支持二进制格式化和TCP协议,根据我的理解webservice只支持http prtocol但是根据一些程序员的意见,堆栈溢出webservice独立于传输协议,所以它是否像asp.net webservice只适用于http和web服务在其他技术中开发的支持TCP和HTTP。 此致,Arun Patil

ASMX Webservice,测试表仅在本地计算机上仅适用于一个WebMethod

我有一个我正在测试的ASMX WebService,在大多数方法中,我能够使用测试表单进行测试。 但是我确实有一种测试forms的方法: The test form is only available for requests from the local machine. 声明此方法与其他方法完全相同,但它确实具有明显更长的参数列表(大多数这些方法只有2或3个参数): [WebMethod] public ActionSuccessResponse makeDestinationRequest(String ownerID, String destinationRegion, String destinationCountry, DateTime desiredTravelDate1, String destinationCity = “”, DateTime? desiredTravelDate2 = null, DateTime? desiredTravelDate3 = null) { 有任何想法吗? 我很难过。

如何将名称/值对传递给ASMX Web方法?

我正在创建一个基本上远程调用某些数据库调用的Web服务(以便它们通过HTTP而不是1433的默认SQL Server端口发生)。 基本上我一直在尝试将多个参数传递给ASMX WebService上的WebMethod。 参数是: 表示要执行的查询的ID的字符串。 一个DataTable,表示应该填充信息的表的结构。 使用上面的ID表示的查询运行的参数字典(即名称值对)以获得预期结果。 一个对这个问题不重要的布尔值 现在我遇到的问题是ID,DataTable和布尔的字符串都很好,但字典却没有。 我知道默认情况下,XMLSerializing不支持任何实现IDictionary的东西,因此我将字典转换为两个对象数组,一个用于键,一个用于值。 我从客户端发送的内容似乎是正确的。 SOAP数据包包含keys数组和values数组的正确值。 我在WebService端收到的内容(我可以在调用的WebMethod中断)对于两个数组都是null。 不是空数组,只是null。 我已经尝试了很多东西,以便将这些参数传递给webservice(编码为SerializableDictionary,尝试将键/值对阻塞到数据表中,尝试简单地使用两个字符串数组,然后将结果转换回到在WebService端的正确类型)但我绝对没有运气。 所以我想总结一下,我的问题是: 有没有人知道成功发送Name-Value对的好方法,其中Name是一个字符串,而Value几乎可以是任何对象类型,但始终是WebService WebMethod的可序列化对象,这样它们的Name-Values就可以正确解释服务方面。

WCF通用字典和了解WCF

好的,我在解决特定问题时遇到了很多困难。 通过服务传输对象。 从概念上讲,它是有道理的……我想? 根据我的阅读,除非已明确定义,否则无法序列化Generic。 所以我想提供我的榜样; 我根本无法上class。 意思是; 我确信还有其他人也遇到了一些困难。 当你提供帮助时,如果你能提供代码; 这将起作用并解释它。 这样我就可以完全理解这个问题。 这对我很有帮助,了解Windows Communication Foundation。 目标是一个客户端应用程序,它只有五个字段; 在其中“发布”到服务器。 名字 姓 电子邮件地址 电话号码 网站地址 这不是太复杂。 这就是我所做的,在我学习WCF的过程中,我尽可能地将其包含在基于SOA的应用程序中。 这样它就可以提供代码的可重用性。 型号/数据合同: #region Using Reference… using System.Runtime.Serialization; using System.Collections.Generic; using System.Threading.Tasks; using System.Text; using System.Linq; using System; #endregion namespace _2Do.Model.Customer { [DataContract(IsReference = true)] public class Person { #region Declared Variable. string […]

WCF MessageContract包装和列表

我收到了客户关于他们的网络服务客户端如何工作的规范。 规范是从服务发送和接收的实际SOAP XML消息以及相应的XSD。 客户希望我实施符合客户要求的Web服务。 客户端使用axis2 ws-stack编写,我想要做的是在WCF中创建一个Web服务,它将接受客户端发出的请求并返回符合他们期望的XML的响应。 在这个问题中,我将只发布与请求相关的XML和XSD,因为如果我可以使用它,响应将以类似的方式进行。 我收到的XML如下: POST /axis2/services/SampleService HTTP/1.1 Content-Type: text/xml; charset=UTF-8 SOAPAction: “sendCommand” User-Agent: Axis2 Host: 127.0.0.1:7777 Content-Length: 347 5 这是相应的XSD的样子: 我已经开始用WCF / MessageContract格式编写类型了,但是我在列表等方面遇到了困难,因为它们是双重包装的。 我的MessageContracts看起来像这样: [MessageContract(WrapperName = “SendCommandRequest”, WrapperNamespace = “http://something.org/”)] public class SendCommandRequest { [MessageBodyMember(Name=”CMD”)] public CMD cmd = new CMD(); } [MessageContract(IsWrapped=false)] public class CMD { [MessageBodyMember(Name=”Station”)] public List stations […]

调用https Web服务(C#)

我实现了一个web服务,该服务在一些https url下可用。 客户端(控制台应用程序)调用它,但抛出以下错误: 提供的URI方案“https”无效; 预计’http’。 我在网上搜索过,但我不确定如何解决它? 这是通过向Web服务添加一些代码来解决的吗? 谢谢 :-)

解决方案将无法构建,因为它无法从服务生成类型转换为我的类型

我有一个WCF服务项目,可以很好地构建,生成一个可访问的WSDL,并且svcutil.exe不会产生任何错误。 我有一个“服务管理器”项目访问该Web服务,并且我已成功添加了服务参考ABCService。 第三个项目包含我需要来回传递的所有POCO对象 – 使用[DataContract]和[DataMember]属性进行大量装饰。 当我尝试构建解决方案时,我看到ABCService的Reference.cs有这样的方法( 为了简洁,我已经用完全命名空间代替(…) ): public (…).Thing SaveThing((…).Thing objThing) { return base.Channel.SaveThing(objThing); } public (…).myCollectionOfThing0mj5ZrAW GetThings() { return base.Channel.GetThings(); } 第一个返回单个Thing的方法工作正常 – 但是每个MyCollection方法都会出错: 错误16参数1:无法从’(…)。MyCollection ‘转换为’(…)。myCollectionOfThing0mj5ZrAW’ 我的集合类按照您的期望进行装饰: [CollectionDataContract] public class MyCollection : List where T : BaseType { // … } 我不知道为什么它会生成时髦的“myCollectionOfThing0mj5ZrAW”名称,或者为什么从一个到另一个的转换失败 编辑1:我尝试过使用 [CollectionDataContract(Name= “myCollection{0}”, ItemName = “{0}”)] 装饰我的集合类,我得到相同的错误,但更新的名称: 错误12参数1:无法从’(…)。myCollection ‘转换为’(…)。myCollectionThing’ 编辑2: 尽管检查了“引用程序集中的重用类型”,但选中了“指定引用程序集”的单选按钮,并选中了我的POCO程序集旁边的框: […]

如何返回具有通用属性的C#Web服务?

我正在创建一个Web服务,并希望使用返回数据更优雅,而不是拥有消费者需要检查的许多属性。 根据幕后生成的数据,我需要能够返回错误数据或消费者期望的数据。 我不想拥有一个大的扁平对象,并在需要时填充属性,并让用户检查“成功”标志,我希望单个属性Data可以是错误类的实例,也可以是一个成功的阶级。 这就是我想要做的事情: class ItemResponse { public bool Success { get; set; } public T Data{ get; set; } } if( /*acceptance criteria*/ ) { ItemResponse resp = new ItemResponse(); resp.Data = new SuccessData(); } else { ItemResponse resp = new ItemResponse(); resp.Data = new ErrorData(); } return resp; public class SuccessData { } […]

使用C#从REST中的REST Api检索数据而不会出现滞后或抖动

我每隔5秒使用C#脚本调用REST。 但问题是应用程序每10秒钟会停滞一次(InvokeRepeating)并等待服务器响应,然后在滞后后给出结果。 如何克服这个问题? 我需要实时访问特定的行,以便检索更改而不会出现任何延迟。 以下代码片段用于读取REST Api using UnityEngine; using System.Collections; using System.Net; using System.IO; using System.Collections.Generic; using System.Linq; using System; using Newtonsoft.Json; using Newtonsoft.Json.Linq; public class Rows { public string description ; public float Efficiency; public bool IsConnected; public string Lastconnection; public float MTBF; public float MTTR; public string Name; public float Speed; public float […]