Tag: rest

Azure rest api put blob

我试图用Azure rest api放一个blob。 我成功地提出了“GET”请求,但我遇到了“PUT”请求的问题。 当我尝试发出“PUT”请求时,我得到404错误(我在stackoverflow中看过相同的post,但它没有帮助我)。我不确定我使用的MessageSignature是否正确(我已经尝试过MessageSignaturePut但没有工作)。 有什么建议? public void UploadBlobWithRestAPI(string uri, DateTime now) { string blobName = “test.txt”; string method = “PUT”; string sampleContent = “This is sample text.”; int contentLength = Encoding.UTF8.GetByteCount(sampleContent); string queryString = (new Uri(uri)).Query; string blobContainerUri = uri.Substring(0, uri.Length – queryString.Length); string requestUri = string.Format(CultureInfo.InvariantCulture, “{0}/{1}{2}”, blobContainerUri, blobName, queryString); HttpWebRequest request = […]

使用URI和Da​​taContract类参数编写Web服务方法

如何获取Web服务方法来访问URI和复杂POST数据中的参数? 我有一个Web服务方法,在URI中有一些参数: “/api/{something}/{id}” 我还有一个标有DataContract / Member属性的类,我希望webservice方法接受它。 请注意,我的类包含一个也标有DataContract / Member属性的子类。 [DataContract] public class MoreData{ [DataMember] public string SomeString { get; set; } [DataMember] public SubClass SubData {get; set;} } 我的方法声明如下: [OperationContract] [WebInvoke( Method = “POST”, UriTemplate = “/api/{something}/{id}”)] public MyWebSvcRetObj Update(string something, string id) 如何让我的Update方法也接受MoreData类? 我已经能够编写如下方法: [OperationContract] [WebInvoke( Method = “POST”)] public MyWebSvcRetObj Update(MoreData IncomingData) 但只有当URI没有指定任何参数时,URI才会显示 […]

使用WebClient或HttpClient下载文件?

我试图从URL下载文件,我必须在WebClient和HttpClient之间进行选择。 我在互联网上引用了这篇文章和其他几篇文章。 无处不在,由于其强大的异步支持和其他.Net 4.5权限,建议使用HttpClient。 但我仍然不完全相信并需要更多的投入。 我使用下面的代码从互联网上下载文件: Web客户端: WebClient client = new WebClient(); client.DownloadFile(downloadUrl, filePath); HttpClient的: using (HttpClient client = new HttpClient()) { using (HttpResponseMessage response = await client.GetAsync(url)) using (Stream streamToReadFrom = await response.Content.ReadAsStreamAsync()) { } } 从我的角度来看,我只能看到使用WebClient的一个缺点,那就是非异步调用,阻塞调用线程。 但是,如果我不担心阻塞线程或使用client.DownloadFileAsync()来利用异步支持,该怎么办? 另一方面,如果我使用HttpClient,是不是我将文件的每个字节加载到内存中然后将其写入本地文件? 如果文件太大,内存开销不会很贵吗? 如果我们使用WebClient可以避免这种情况,因为它将直接写入本地文件而不会消耗系统内存。 那么,如果性能是我的首要任务,我应该使用哪种方法进行下载? 如果我的上述假设是错误的,我想澄清一下,我也愿意接受替代方法。

如何使用TFS Rest API获取unit testing结果?

如何使用Rest API检索TFS中构建的unit testing结果? 构建定义使用VNext(Visual Studio 2015 Update 3)。 var vssConnection = new VssConnection(_configurationSpec.TeamProjectCollection, new VssClientCredentials()); _buildClient = vssConnection.GetClient();

在WCF REST服务中获取原始请求URL

我要在我的WCF rest webservice中检索原始请求URL。 现在我的代码看起来像这样: public class MyServiceAuthorizationManager : ServiceAuthorizationManager { protected override bool CheckAccessCore(OperationContext operationContext) { base.CheckAccessCore(operationContext); var url = operationContext.IncomingMessageProperties.Via.OriginalString; … web.config中 如果我的原始url是 http://192.168.1.100:8081/test 这段代码返回 HTTP://主机名:8081 /测试 有没有办法检索确切的原始请求url? 注意 我在web.config中找到了关于cutomize“baseAddress”标签的post,但是我的扩展名webservice没有特定的端点,我不想添加它。 我不知道是否有办法在没有端点的情况下做到这一点。 我发现这篇文章https://stackoverflow.com/a/5915713/735864与System.Net.HttpRequestHeader.Host一起播放,但是端口号不起作用! 我知道我可以解析提供的URL并进行替换但是……我不认为这是实现此目的的最佳实践。

在.Net中使用基于REST的Web服务

问候, 我对使用.Net使用基于REST的Web服务时的最佳方法感到困惑。 目前我正在使用System.net.webclient类。 我应该在System.Net中使用Webresponse,webrequest类吗? 如果我要使用另一种方法(除了webclient),我将获得哪些缺点/优势? 谢谢,

在Windows Azure上部署WCF服务

只是为了澄清我是第一次用azure工作。 几个月前我用SQL Server连接创建了一个Restful WCF服务。 我在IIS上使用SQL Server Express 2012上的数据库部署了WCF。该服务没有问题。 [OperationContract] [WebGet(UriTemplate = “feed/{ID}/{Rating}/{Feed}”, ResponseFormat = WebMessageFormat.Json)] string feed(string ID, string Rating, string Feed); 现在我必须将WCF服务移动到Azure。 问题是我不知道如何将WCF部署到azure,如果甚至可以将WCF部署到azure。 数据库已移至azure。

将CDATA与WCF REST入门工具包一起使用

我有一个使用WCF REST入门套件的预览2构建的服务,但是我遇到了在调用中传递XML样式数据的问题。 这是我的请求对象: [DataContract(Namespace = “”)] public class ServiceRequest { [DataMember] public string ContentText { get; set; } [DataMember] public string ApiKey { get; set; } } 一切正常,直到你扔进那里。 是否有将ContentText属性封装在CDATA或类似的东西中?

使用RestSharp发送HTTP POST Multipart / form-data字段

我在使用RestSharp进行REST API时遇到问题,我需要将其用于我正在进行的项目。 我需要发出的请求分为三部分:头API密钥,要上传的文件和一堆JSON格式的数据。 API要求使用表单字段名称“data”发送数据部分。 出于某种原因,这会导致问题,因为它在请求正文中命名字段“data”。 我的代码如下: var request = new RestRequest(UPLOAD_DOC_URLSEGMENT, Method.POST) { RequestFormat = DataFormat.Json, AlwaysMultipartFormData = true, JsonSerializer = new RestSharpJsonDotNetSerializer(customSerializer) }; if (doc is DocA) request.AddParameter(“data”,doc as DocA,ParameterType.RequestBody); //request.AddBody(doc as DocA); else request.AddParameter(“data”, doc as DocB,ParameterType.RequestBody); //request.AddBody(doc as DocB); request.AddFile(“file”, doc.File.FullName); 如您所见,我试图同时使用request.AddBody(doc)方法和request.AddParameter(name, object, type)方法。 它们似乎都没有正确发送数据,因为我收到服务器的响应,说明缺少必需的参数。 使用fiddler我可以看到二进制数据,但从来没有使用这两种方法的JSON数据。 我已经浏览了RestSharp文档,但我找不到任何允许我为表单数据体指定特定“字段”名称作为“数据”的内容,这是我认为导致我遇到的问题。 我在这做错了什么? 编辑:进一步检查fiddler后,它似乎没有将我的JSON数据添加到HTTP请求的主体。 但是,在上传(执行命令)之前有一个断点,我可以在参数列表(和文件列表)中看到所有序列化的内容。 当用Fiddler检查时,我看到文件二进制数据,然后是多部分/表格数据边界,然后什么都没有。 我认为这是我的数据应该是…

WebAPI帮助页面:禁用生产版本

我在VS 2010中使用旧的WCF框架开发了许多内部REST接口。它生成帮助页面的能力对DEV和QA平台来说很方便,但对于生产版本,很容易禁用这些帮助页面的生成在web.config文件中: 我现在正在继续使用WebAPI框架(目前在VS 2012上使用版本1),但是关闭此function似乎并不简单(即我找不到任何有关如何执行此操作的信息)一个web.config文件)。 当然,我可以继续在代码本身内手动执行此操作,但肯定有一种更简单的方法; 类似于WCF如上所述的做法。 我想使用web.config文件方法,因为我已经为其他设置准备了web.release.config转换文件。 任何关于此的最佳实践的想法将不胜感激。