Tag: wcf web api

使用新的WCF Web API设置Ninject

所以我一直在玩最新版本的WCF Web API,并决定用它来实现Ninject。 基于我读过的内容,我需要实现IResourceFactory接口,该接口需要以下方法: public object GetInstance(System.Type serviceType, System.ServiceModel.InstanceContext instanceContext, System.Net.Http.HttpRequestMessage request); public void ReleaseInstance(System.ServiceModel.InstanceContext instanceContext, object service); 所以我把鸡抓了下面: public class NinjectResourceFactory : IResourceFactory { private readonly IKernel _kernel; public NinjectResourceFactory() { var modules = new INinjectModule[] { new ServiceDIModule(), //Service Layer Module new RepositoryDIModule(), //Repo Layer Module new DataServiceDIModule() }; _kernel = new StandardKernel(modules); […]

从多部分文件上载中读取内容到内存

我在将上传的XML文件读取到字符串而不是文件时遇到问题。 我的问题是,当我尝试访问流( var stream = part.ContentReadStream )时,它就关闭了。 我觉得它正在访问封闭的文件流。 我错误地使用MultipartFormDataStreamProvider吗? 文件大小只有几千字节,所以这应该不是问题。 [WebInvoke(Method = “POST”, UriTemplate = “{importFile}”)] public HttpResponseMessage Upload(string importFile, HttpRequestMessage request) { if (!request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } // Create a stream provider for setting up output streams MultipartFormDataStreamProvider streamProvider = new MultipartFormDataStreamProvider(); // Read the MIME multipart content using the stream provider […]

C#WCF Web Api 4 MaxReceivedMessageSize

我正在使用WCF Web Api 4.0框架并且运行到maxReceivedMessageSize已超过65,000错误。 我已经更新了我的webconfig看起来像这样但是因为我使用了WCF Web Api我认为这已不再使用了,因为我不再使用webHttpEndpoint了? <!– Configure the WCF REST service base address via the global.asax.cs file and the default endpoint via the attributes on the element below –> 在新的WCF Web Api中,我在哪里指定MaxReceivedMessageSize? 我也尝试过CustomHttpOperationHandlerFactory无济于事: public class CustomHttpOperationHandlerFactory: HttpOperationHandlerFactory { protected override System.Collections.ObjectModel.Collection OnCreateRequestHandlers(System.ServiceModel.Description.ServiceEndpoint endpoint, HttpOperationDescription operation) { var binding = (HttpBinding)endpoint.Binding; binding.MaxReceivedMessageSize = Int32.MaxValue; […]

更新Entity Framework 4.1中的外键实体

我目前正在使用WebApi构建REST服务,后备存储正在使用EF4.1。 我遇到了障碍,我无法更新外键…… 2个模型类看起来像: public class User { [Key] public int UserId { get; set; } public string Name { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string Gender { get; set; } // // Membership public Membership Membership { get; set; } } public […]

如何通过Id为Odata创建查询表达式

我已经创建了一个OData服务,现在我正在尝试在客户端使用此服务。 我想创建一个表达式,例如c#查询表达式中的下面的url- http://odata.org/Product-Service/Product(150) 上面的url在浏览器中工作正常,但我想在C#中为上面的url创建查询表达式。 任何帮助都会非常明显。

validation模型属性WCF Web APi

我有一组托管WCF Web Api的服务,我需要做的是validation应用程序模型中的属性。 例如,在MVC 3中,我在模型中修饰属性,如下所示: [StringLength(30)] public string UserName { get; set; } 然后在控制器中我这样继续validation模型是否满足validation参数: [HttpPost] ActionResult Create(Model myModel) { if(ModelState.IsValid(){ Post the model } else { Don’t post the model } } 有没有办法在WCF Web Api中做类似的事情?

HttpClient身份validation标头未被发送

我正在尝试将HttpClient用于需要基本HTTP身份validation的第三方服务。 我正在使用AuthenticationHeaderValue 。 这是我到目前为止所提出的: HttpRequestMessage request = new HttpRequestMessage( new RequestType(“third-party-vendor-action”), MediaTypeHeaderValue.Parse(“application/xml”)); request.Headers.Authorization = new AuthenticationHeaderValue( “Basic”, Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes( string.Format(“{0}:{1}”, “username”, “password”)))); var task = client.PostAsync(Uri, request.Content); ResponseType response = task.ContinueWith( t => { return t.Result.Content.ReadAsAsync(); }).Unwrap().Result; 看起来POST动作工作正常,但我没有收到我期望的数据。 通过一些反复试验,并最终使用Fiddler来嗅探原始流量,我发现授权标头没有被发送。 我已经看过了 ,但我认为我已经将身份validation方案指定为AuthenticationHeaderValue构造函数的一部分。 有没有我错过的东西?

DELETE方法.NET WebAPI不起作用

我已经看过很多关于这个的post,但我的新WebAPI的DELETE方法根本不起作用,并返回404,使用Windows 7 32位,IIS 7.5。 我试过了 卸载WebDAV 将PUT,DELETE,OPTIONS添加到ExtensionlessUrlHandler-Integrated-4.0处理程序(以及32位/ 64位处理程序)。 允许所有模块运行。 所有都没有用,所有返回404.如果我将DELETE类型更改为GET,那么服务完全运行GET命令。 有没有任何其他想法的人? 这让我疯狂。 编辑: 我正在调用DELETE方法(mediator是jQuery调用的包装器): mediator.publish(“AjaxCall”, { url: “/api/files/” + $(a.currentTarget).data(“fileid”), type: “DELETE”, } }); 和WebAPI: // DELETE api//5 // [HttpDelete] – Tried this too public void Delete(int fileId) { Files.DeleteFile(fileId); } 和相关的web.config:

C#WCF Web API + JSONP

有没有一种简单的方法可以让JSONP为新的WCF Web APIrest服务工作? 我试过这个没有运气

部署webAPI服务器端所需的最小文件

因此,经过大量的研究,我开始使用webAPI入口点来增强我们的服务服务器堆栈。 基于这个主题 ,特别是Digerati董事会成员的最后一篇文章,我们将webAPI服务作为WCF应用层的外观实现。 (我们的WCF服务只是我们的应用程序层的外观,其中所有行为都存在) 我的问题是这个。 我下载了MVC 4并在我的服务解决方案中创建了一个新的WebAPI项目。 但哇,在我的项目中创造了大量废话,我根本不需要! 例如,所有图像文件,家庭控制器,视图和模型等。 因此,在将其拆解为服务项目时,构建function服务项目所需的最小文件是什么? 我们的目的是在同一服务器中并排发布两种服务类型(WCF和webAPI)。每个服务调用执行相同的相同服务调用并返回请求的特定DTO。 到目前为止,它看起来像App_Start,Controllers和Glabal.asax / web.config条目。 我绝对不需要视图,模型或图像! 关于其他人为完成纯服务部署所做的工作的任何意见都将受到欢迎。