Tag: asp.net web api

将json发布到mvc 4 WebApi控制器操作。 为什么不反序列化我的数组呢?

以下一直让我有点疯狂。 我发现了几个类似的问题,但他们没有提供解决方案。 我试图发布一个包含一些数据项的json对象。 其中一个是对象本身的列表。 这里是: { “ClaimType”:”Trade”, “ClaimedProductId”:”4″, “ClaimingUserId”:”2″, “Message”:”test”, “TradeOffers”:[ { “OfferedProductId”:”7″, “OfferedQuantity”:”5″ }, { “OfferedProductId”:”12″, “OfferedQuantity”:”2″ } ] } 这个jsonvalidation了。 我的控制器看起来像这样: public class ProductController : ApiController { [HttpPost] public void Claim(ClaimViewModel claimViewModel) { //do some amazing stuff with the data from the viewmodel. //sorry guys. This stuff is just tooo cool to be […]

如何在不缓冲的情况下将文件从数据库异步传输到webclient

我正在尝试使用.net 4.5和web api将文件从sql server异步流式传输到Web客户端。 我正在使用SqlDataReader.GetStream()从数据库中获取流。 但是,当webapi从流中读完时,我不确定如何连接数据库连接的处理/关闭。 有样品吗?

Web APIvalidation不会触发自定义模型绑定器

我正在使用Web API 5构建Web服务。我正在通过扩展IModelBinder接口来实现自定义模型绑定器,以将复杂类型映射为动作参数。 绑定部分工作正常。 但模型validation不会发生。 ModelState.IsValid始终为true。 public class PagingParamsVM { [Range(1, Int32.MaxValue, ErrorMessage = “Page must be at least 1”)] public int? Page { get; set; } [Range(1, Int32.MaxValue, ErrorMessage = “Page size must be at least 1”)] public int? PageSize { get; set; } } public class PaginationModelBinder : IModelBinder { public bool BindModel(HttpActionContext […]

指定asp.net核心1.0 WebAPI.exe应该在program.cs中为prod和dev使用的url(端口)

我在我的asp.net core 1.0 web api(.NET Framework)program.cs中执行以下操作,以指定我希望我的web api exe运行的端口仅用于开发目的: public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup() .UseUrls(new string[1] { “http://*:12012” }) .Build(); host.Run(); } 但是,当我发布到生产时,这行会导致WebAPI出错,因为我希望exe使用生产web-api url即productionWeb / api / values而不是localhost:12012 / values 无论如何,我可以得到两个世界中最好的能够指定我希望它在端口12012上运行以用于开发目的和生产URL用于产品目的吗? 我目前的解决方案是在发布之前注释掉该行。

如何使用Breeze与通用工作单元和存储库?

使用这个: https://genericunitofworkandrepositories.codeplex.com/ 和以下一组博客文章: http://blog.longle.net/2013/05/11/genericizing-the-unit-of-work-pattern-repository-pattern-with-entity-framework-in-mvc/ 我们正在尝试将这些存储库与Breeze一起使用,因为它可以很好地处理客户端javascript和OData。 我想知道我们如何使用这些与Breeze来正确处理覆盖BeforeSaveEntity 。 我们在保存期间需要发生相当多的业务逻辑(修改像ModifiedBy , ModifiedTime , CreatedBy等属性)但是当我们更改它们时它们不会被微风更新,所以我们必须在保存后重新查询(我们已经尝试手动映射更改,但它要求我们复制所有业务逻辑)。 我们的第二个选择是检查每个entity的类型,然后为它请求正确的存储库,在内部处理保存,然后在客户端上执行新的get请求以获取更新的信息。 这很健谈,所以我们希望有更好的方法。 在绕过breeze的保存而不返回错误或之后必须重新获取数据的情况下更新这些对象的正确方法是什么? 保存期间Breeze with Business Logic的任何示例都非常有用,特别是如果它直接在BeforeSaveEntity方法中发生在服务,存储库或其他内容中。

如何将FormData读入Web API

我有ASP.NET MVC webapplication我已经添加了webapi webServvices。 我有以下javascript代码。 var data = new FormData(); data.append(“filesToDelete”, “Value”); $.ajax({ type: “POST”, url: “/api/FileAttachment/UploadFiles?clientContactId=” + clientContactId, contentType: false, processData: false, data: data, success: function (result) { }, error: function (xhr, status, p3, p4) { } }); 以下是WebApi代码: public void UploadFiles(int clientContactId) { if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } var jsonContent = […]

HttpApplication不会退出

我有一个单页应用程序与Angular.js前,web api2后端,也使用Castle Windsor和SignalR。 我在维护服务器状态的服务器上使用ac#component。 因此,在Application_Start()上,我将Castle Windsor的主要组件注册为Singleton。 IoC.Container.Register(Component.For(typeof(MainManager)).ImplementedBy(typeof(MainManager)).LifeStyle.Singleton); (但是,我测试了PerWebRequest和其他一些生活方式,但主要问题仍然是相同的,启动任务没有退出) 然后在我的Web Api中,我可以针对该实例执行命令。 [HttpGet] public void StartProcess(Params p) { IoC.Resolve().StartOperation(p); } 这也让我有机会通过调用另一个控制器方法来阻止它从网站上 [HttpGet] public void Stop() { IoC.Resolve().RequestStop(); } 这在大多数情况下都很有效。 但是,有时我的应用程序处于错误状态(由于多种原因,它可以在prod中重新启动)我可以通过在运行操作期间修改web.config来模拟此问题,因此很多事情都会重置(例如Signal- R连接),但主要操作不会停止运行。 (事实上​​,一旦我的应用程序处于错误状态,我就不能再调用Stop控制器方法,因为MainManager已被重置,所以现在停止它的唯一方法是重置整个IIS。这当然不是必需的) 我试图找出如何检测此状态,并终止正在运行的进程。 作为一种可能的解决方案,我正在尝试使用Bound生活方式(Castle Windsor 3中的新function),尝试将我的经理范围扩展到我的web api httpapplication,但还没有运气。 更新 我尝试将主要任务方法设为静态 [HttpGet] public void Start(ForceData data) { MainManager.Start(data); } 我相信这应该取出方程式中的单例实例,但是在触摸web.config之后代码仍然不会中断 更新 将MainManager类从等式中取出。 我所有的web api方法现在都是循环+睡眠 [HttpGet] public void Start(ForceData […]

通过Web客户端post方法C#传递两个JSON对象

我需要在C#中使用Web客户端方法将下面的对象作为post方法的参数传递。 { “company”: { “id”: “e63dfcab345260b2591f585126ede56627db4ef2” }, “requestor”: { “id”: “”, “email”: “customer@example.com “, “firstName”: “Test”, “lastName”: “Requestor”, “role”: “employerAdmin”, “phone”: “(415)1112222”, “title”: “HR Manager” } } 我这样转换了 company[id]=e63dfcab345260b2591f585126ede56627db4ef2&requestor[id]=&requestor[email]=customer@example.com+&requestor[firstName]=Test&requestor[lastName]=Requestor&requestor[role]=employerAdmin&requestor[phone]=(415)1112222&requestor[title]=HR+Manager 但我得到无效的参数错误。 请帮我。 提前致谢。 我的整个代码如下: using (var Requestor = new System.Net.WebClient()) { string url = “https://stormaas-pre.inflection.com:8443/v1/Requestor?”; string parameters = “company[id]=’757563a3-67df-4a6e-9ef9-d89d57d41e0d’&requestor[id]=”&requestor[email]=’customer@example.com’&requestor[firstName]=’Test’&requestor[lastName]=’Requestor’&requestor[role]=’employerAdmin’&requestor[phone]='(415)1112222’&requestor[title]=’HRManager'”; Requestor.Headers.Add(“user-agent”, “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT […]

Web API 2路由属性在一个控制器中工作,但不在另一个控

使用.NET 4.5.1,Web API 2,Visual Studio 2013: 我有一个Web API,它有以下路由…… / API /提供商/特色菜 / API /提供商/特色/ 123 / API /供应商/专业/医学 这些按预期工作……第一个获得所有专业的列表,第二个获得专业ID 123,第三个获得名称中的“药”所有专业。 我也有这些路线…… / API /位置/特色菜 / API /位置/特色/ 123 / API /位置/特色/邻 只有最后两个工作…第一个返回此错误: No HTTP resource was found that matches the request URI […] No route providing a controller name was found to match request URI […]

将IP地址添加到HttpRequestMessage

如何为HttpRequestMessage添加IP地址? 我正在为Web.API应用程序编写unit testing,我有一个AuthorizeAttribute来检查调用者的IP地址 – string[] AllowedIPs = new string[] { “127.0.0.1”, “::1” } string sourceIP = “”; var contextBase = actionContext.Request.Properties[“MS_HttpContext”] as System.Web.HttpContextBase; if (contextBase != null) { sourceIP = contextBase.Request.UserHostAddress; } if (!string.IsNullOrEmpty(sourceIP)) { return AllowedIPs.Any(a => a == sourceIP); } return false; 我按如下方式构建测试请求 – var request = CreateRequest(“http://myserver/api/CustomerController, “application/json”, HttpMethod.Get); HttpResponseMessage response = […]