Tag: rest

阅读HttpwebResponse json响应,C#

在我的一个应用程序中,我收到了来自webrequest的回复。 该服务是Restful服务,将返回类似于以下JSON格式的结果: { “id” : “1lad07”, “text” : “test”, “url” : “http:\/\/twitpic.com\/1lacuz”, “width” : 220, “height” : 84, “size” : 8722, “type” : “png”, “timestamp” : “Wed, 05 May 2010 16:11:48 +0000”, “user” : { “id” : 12345, “screen_name” : “twitpicuser” } } 这是我目前的代码: byte[] bytes = Encoding.GetEncoding(contentEncoding).GetBytes(contents.ToString()); request.ContentLength = bytes.Length; using (var requestStream = […]

来自asp.net 2.0的REST

我刚刚建立了一个asp.net 2.0网站。 现在我需要添加REST Web服务,以便我可以与另一个Web应用程序进行通信。 我以前使用过2个SOAP Web服务项目,但根本没有使用REST的经验。 我想只有几周才能正常工作。 谷歌搜索后,我发现它并不那么容易。 这是我发现的: 没有REST开箱即用的asp.net。 WCF REST入门套件Codeplex预览版2基于.net 3.5并仍处于测试阶段 restASP.NET示例 ASP.NET 2.0中的REST Web服务(C#) Exyus 使用摇篮曲处理POST和PUT方法 ADO.NET数据服务 … 现在我的问题, a).net 2.0的REST解决方案? 如果是,哪一个是最佳解决方案? b)如果必须,我的asp.net从2.0迁移到3.5有多难? 它只是编译简单,或者我必须更改很多代码? c)WCF REST入门套件是否足以在生产中使用? d)我是否必须首先学习WCF,然后是WCF REST入门套件? 哪里是最好的起点? 我感谢任何帮助。 谢谢Wes

使用newtonsoft或restsharp反序列化json字符串

我有一个字符串,它来自一个Json格式的数据库。 我试图用以下方法反序列化它: RestSharp.Deserializers.JsonDeserializer deserial = new JsonDeserializer(); var x = deserial .Deserialize(myStringFromDB) 但.Deserialize函数需要一个IRestResponse 有没有办法使用RestSharp来反序列化原始字符串?

IIS中的内存exception

我有一个具有MVC模板并使用REST的应用程序。 假设我有一个rest电话,它会触及特定的方法 void sample function() { // connects to db through entity framework // retrieves data and embeds in to list //returns JSON of data received. } 所以这里的问题是我测量了运行程序所需的内存。 它大约是40,000kb。 现在,当我给另一个rest时,内存不会在IIS中清理。它从40,000kb而不是零开始。 最后 ,如果我做3或4次调用,则会出现内存exception。 因此,每次调用后我都需要清理IIS内存,而是保留前一次调用的内存。 如何释放以前所有调用的内存。我通过处理模型和所有其他可能性尝试了各种解决方案。 如果部署在本地而不是IIS上,解决方案似乎有效。 有人可以帮帮我吗?

ServiceStack如何处理并发调用?

ServiceStack如何处理并发调用? 我在WCF中寻找相当于ConcurrencyMode.Multiple的东西。 我的WCF服务设置了此属性: [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Multiple, UseSynchronizationContext = false)] 我是否需要在ServiceStack中启用任何内容以使其为每个调用使用多个线程?

从C#或ASP.Net开始REST Web服务的位置

我正在考虑开始编写一些REST Web服务作为提供数据的方法。 我想当我的REST Web服务可用时,我的一些Web应用程序和控制台应用程序将能够使用REST Web服务作为数据服务来获取,添加,更新和删除数据到数据库。 除此之外,我想添加身份validationfunction来识别任何请求。 我的问题是我应该从哪里开始? 我看到了Microsoft ADO.Net数据服务 。 不确定这是一个好的开始吗? 有没有可用的例子?

如何从WCF REST方法返回自定义类型值的Dictionary作为常规JSON对象?

假设我有一个看起来像这样的自定义类型: [DataContract] public class CompositeType { [DataMember] public bool HasPaid { get; set; } [DataMember] public string Owner { get; set; } } 和一个如下所示的WCF REST接口: [ServiceContract] public interface IService1 { [OperationContract] Dictionary GetDict(); } 那么我如何让我的方法实现返回一个看起来像这样的JSON对象… {“fred”:{“HasPaid”:false,”Owner”:”Fred Millhouse”},”joe”:{“HasPaid”:false,”Owner”:”Joe McWirter”},”bob”:{“HasPaid”:true,”Owner”:”Bob Smith”}} 我不希望它看起来像这样: [{“Key”:”fred”,”Value”:{“HasPaid”:false,”Owner”:”Fred Millhouse”}},{“Key”:”joe”,”Value”:{“HasPaid”:false,”Owner”:”Joe McWirter”}},{“Key”:”bob”,”Value”:{“HasPaid”:true,”Owner”:”Bob Smith”}}] 理想情况下,我宁愿不必改变方法的返回类型。 我尝试了很多不同的方法,但找不到有效的解决方案。 令人讨厌的是,使用Newtonsoft.Json在一行中生成正确形状的JSON对象结构很容易: string json = JsonConvert.SerializeObject(dict); 其中dict定义为: Dictionary dict = […]

JSON.NET部分更新Rest API客户端

我正在使用JSON.NET为REST API构建C#/ .NET 4.5客户端。 API支持部分更新; 因此,更新中json中存在或缺少属性具有意义。 如果属性在json中,则服务器将相应地设置该值; 该属性未传递服务器将不会更新它。 这也适用于空值。 我为每个模型都有.NET类; 具有每个JSON属性的属性(非常标准)。 举个例子,假设我有一个已存在于服务器上的帐户对象(名称,备注): { ‘name’:’craig’, ‘notes:’these are notes’ } 如果我传入此json进行更新,它将更新名称,但会将注释设置为“这些是注释”: var account = api.GetAccount(); account.Name = “bob”; api.UpdateAccount(account); { ‘name’:’bob’ } 如果我将此json传递给更新,它将在服务器上将名称和注释设置为null: var account = api.GetAccount(); account.Name = “bob”; account.Notes = null; api.UpdateAccount(account); { ‘name’:’bob’, ‘notes’:null } 到目前为止一切都很好。 我的问题是如何让JSON.NET与它一起很好地发挥作用。 JSON.NET允许控制NullValueHandling,它基本上表示是否应该序列化null值。 然而,在这种情况下这还不够。 我需要能够确定调用代码是否显式将值设置为null。 有没有推荐的方法来处理这个? 我尝试使用我的模型内部的Dictionary来存储要通过JSON序列化的属性。 这允许我通过字典中的键的存在来判断属性是否已被设置为任何(包括null)。 我发现这种方法有一些困难,我最终重写了许多JSON.NET标准的代码(类型序列化,generics,nullables,枚举……)。 […]

类型xxxx不期望使用xmlinclude或soapinclude

我有一个关于这个序列化问题的奇怪案例 – 在本网站上已经多次询问过,我已经完成了一些问题并尝试了常用项目无济于事: 将[XmlInclude]添加到抛出错误的类中 删除命名空间 为每个类添加不同的命名空间 为了进一步解释,我在下面提供了我的代码的简化版本。 本质上我使用WebServiceHost对象来运行RESTful服务,我的一个端点返回一个序列化为XML的对象(我用[DataContract]和[DataMember]属性注释了对象)。 此对象包含SerializableDictionary ( 此处 ),其中值已作为object键入。 我相信这就是它失败的原因: 在为值分配基元时,可以正常工作 当我将自定义对象分配给KV对V时,我得到了意外的类型exception,可能是因为Serializer不知道如何对对象进行序列化/某种命名空间问题 显然,我无法使用[XmlInclude]注释Object.cs,因为它是一个服务,我不是自己序列化我不能使用像 new Serializer(typeof(…), new Type[] { … }} 我有什么想法可以做什么? 我想过不输入dict值作为对象,而且更具体但问题是这个值可以采用原语或cusotm类型。 一些代码来解释上面的内容: 编辑:更新了以下代码,使其更加清晰 [DataContract] public class ResponseObject { [DataMember(Name = “data”)] public SerializableDictionary Data { get;set; } public ResponseObject() { Data = new SerializableDictionary(); } } … var d1 = new […]

Restful Login – 正确实施

RESTful服务的新手,但在这个主题上阅读了很多。 在VS2010 C#中实现 在stackoverflow上已经提出并回答了类似的(几乎相同的)问题,但老实说,我从回复中没有学到任何东西。 我想实现一个AuthenticatUser调用,其中发送用户名和密码并返回一个validation密钥。 鉴于这需要通过GET,POST,PUT或DELETE来完成,看起来GET是最合适的。 所以也许GET mydomain / myservice / authenticate / {username} / {password} 我不喜欢这个,因为用户名和密码是在URI中传递的,但据我所知,在GET中发送正文并不是一个好主意。 所以POST或PUT可以工作,但这似乎与RESTFul哲学背道而驰。 问题1:在URL中发送密码等敏感数据是否可以? 该网站将使用SSL。 问题2:在GET中,当有多个参数被传递时,似乎URI概念会有点疯狂,复杂的查询应该如何被RESTful处理? 问题3:RESTful API中首选的(正常的,最常见的)身份validation方法是什么?