Articles of asp.net web api

指定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 = […]

Web API转换为Azure Mobile Service而不是序列化所有属性

我有一个工作的Web API,我正在转换为.Net Azure移动服务。 API返回一个复杂的模型 – 具有属性的对象 – 其中一些是其他对象的集合。 这与普通的Web API一样正常,但是使用Azure移动服务我遇到了一个问题,即我的某个模型没有序列化它的所有属性。 当我在控制器中的return语句上设置断点时,我看到所有属性及其值都存在。 这让我相信问题在于序列化(JSON)。 return Request.CreateResponse(HttpStatusCode.OK, myModel); 正在序列化的属性示例: public Guid Id { get; set; } public IEntityDto ModelDto { get; set; } //this is an object with many properties all of which serialize 未序列化的属性示例: public ItemStatus Status { get; set; } //this is an enum public string […]

将xml响应映射到类?

我不知道如何将一些XML表示为C#类。 有没有人有任何关于如何正确映射这个xml的建议? 以下是我的尝试: 1 5 public class authenticationResponse { [XmlElement(“Accounts”)] [DataMember] public List Accounts { get; set; } } public class Account { public long id { get; set; } }

在Web API 2中返回一个String

听起来很简单,我没有找到任何关于此的文档,也许我写错了所以如果是这样的话,一些关于此的好文档将不胜感激。 我只想返回一个字符串或类型字符串的模型。 return “string here”; 我每次都会收到此错误: Severity Code Description Project File Line Error CS0029 Cannot implicitly convert type ‘string’ to ‘System.Web.Http.IHttpActionResult’ TaskManagement C:\dev\TaskManagement\TaskManagement\Controllers\JobsController.cs 157 我也尝试过使用CAST – 同样的错误。 return (IHttpActionResult)”string”