Tag: asp.net web api2

WebApi 2 POST使用单个字符串参数而不是wokring

我有以下控制器: public class ValuesController : ApiController { // POST api/values public IHttpActionResult Post(string filterName) { return new JsonResult(filterName, new JsonSerializerSettings(), Encoding.UTF8, this); } } WebApi配置 config.Routes.MapHttpRoute( name: “DefaultApi”, routeTemplate: “api/{controller}/{id}”, defaults: new { id = RouteParameter.Optional }); 我使用这个js代码来调用api $.ajax( { url: “/api/values/”, type: “POST”, dataType: ‘json’, data: { filterName: “Dirty Deeds” }, success: function (result) […]

使用异步任务的Web API 2下载文件

我需要编写一个类似下面的方法来返回一个文本文档(.txt,pdf,.doc,.docx等)虽然有很好的例子可以在Web上的Web API 2.0中发布文件,但我找不到相关的文件。只需下载一个。 (我知道如何在HttpResponseMessage中执行此操作。) public async Task GetFileAsync(int FileId) { //just returning file part (no other logic needed) } 以上是否需要异步? 我只想回流。 (这样可以吗?) 更重要的是,在我最终以某种方式完成工作之前,我想知道做这种工作的“正确”方式是什么……(所以提到这一点的方法和技术将会非常感激)..谢谢。

IHttpActionResult vs async Task

我见过的大多数Web API 2.0方法返回IHttpActionResult ,它定义为“定义异步创建System.Net.Http.HttpResponseMessage的命令”的接口。 当方法返回async Task时,我有点困惑。 你为什么要用另一个呢? 或者这些function是否完全相同 – IHttpActionResult不是已异步的吗?

Web Api 2会话

我无法在web api 2中获取会话数据。我已经validation了cookie是在fiddler中发送的。 我知道web api 2最佳实践是无状态,但由于对项目的要求,现在必须满足状态。 我试过这个链接。 WebAPI 2属性路由启用会话状态 var session = SessionStateUtility.GetHttpSessionStateFromContext(HttpContext.Current) 通过上面的解决方案,我在该函数上获得了一个nullexception。 我还尝试通过修改路由中的请求处理程序,以旧方式api中的方式复制这种方式,但这在web api 2中不可用。 我目前在mvc5中设置了一些会话变量。 这工作和会话保持不变,但无论何时我在web api 2中尝试使用会话,下面都是null。 HttpContext.Current.Session

Autofac RegisterInstance与SingleInstance

IProductRepositoryProxy ProductDataServiceProviderInstance = new ServiceProductDataProvider(); builder.RegisterInstance(ProductDataServiceProviderInstance).As(); VS builder.RegisterType().As().InstancePerRequest(); 我在这里看到了前雇员的代码,并想知道这个人是否想要注册一个.SingleInstance()行为。 builder.RegisterType().As().SingleInstance(); 使用RegisterInstance的ServiceProductDataProvider的手动新增与Register .SingleInstance()不同吗?

如何使用web api发布和接收文件

我有一个Api Post方法,我希望能够接受任何文件类型,看起来像这样: [HttpPost] public async Task Post() { if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } var provider = new MultipartMemoryStreamProvider(); await Request.Content.ReadAsMultipartAsync(provider); if (provider.Contents.Count != 1) { throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.BadRequest, “You must include exactly one file per request.”)); } var file = provider.Contents[0]; var filename = file.Headers.ContentDisposition.FileName.Trim(‘\”‘); var buffer = await file.ReadAsByteArrayAsync(); } 当我尝试将图像发布到它时,这适用于小提琴手。 但是,我正在编写一个客户端库,我有一个如下所示的方法: […]

在ASP Web API中指定无效参数时返回错误

我正在使用C#和ASP.NET Web API创建一个API,我希望它在使用无法识别的参数时返回错误。 例如: /api/Events 应该列出一系列事件 /api/Events?startTime={{startTime}} 应该返回在特定时间开始的事件列表 /api/Events?someRandomInvalidParameter={{something}} 应该返回错误 有一个很好的配置方式来做到这一点? 如果没有,我怎样才能得到一个参数列表来检查自己。

在Asp.net MVC中获取post数组

我正在编写一个处理短信联系人的web api2程序。 服务器上有一个JSONpost,如下所示: { “Id”:”4″, “ClientId”:”2″, “NoOfRecipient”:”3″, “Numbers”: { “num1”:9898776568, “num2”:9087674589 }, “Msg”:”This is a test” } 在Server中我有一个类来处理这个JSON,如下所示: public class SmsData { public int Id { get; set; } public int ClientId { get; set; } public int NoOfRecipient { get; set; } public IEnumerable Numbers { get; set; } public string Msg { get; […]

如何通过angularJS和webaAPI2下载内存流对象

我有一个项目,我使用NPOI从我的Angular应用程序生成Excel文档。 我可以通过我的角度服务调用我的webapi控制器,如下所示: function exportReportToExcel(report) { return $http.post(‘reportlibrary/exportReport/’, report, { }).then(function (response) { return response.data; }); }; 在控制器内,我进行以下调用 [HttpPost] public HttpResponseMessage ExportReport([FromBody]DTOs.Report report) { try { IReportPersistenceManager manager = ContainerConfigurator.Instance.Resolve(); MemoryStream ms = new MemoryStream(); //we have to pass to the NOPI assemble file type as well as file name //since we only deal with excel […]

如何向我未存储在数据库中的Web API响应中添加属性?

我正在使用Entity Framework 6.0构建C#Web API。 我有最简单的用户类,有3个属性,我坚持将SQL存入用户表,其中有3个相应的列,其中UserID是其主键。 public partial class User { public string UserID {get; set;} public string FirstName {get; set;} public string LastName {get; set;} } 我想在Web API中添加两个仅用于输出的属性,我不想在我的数据库中存储这些属性。 我使用这些属性与消费客户端“状态”和“消息”信息进行通信,这些信息不属于用户类。 状态=确定|错误|警告。 消息将是Web API需要与调用客户端通信的任何消息。 我的问题是:在发送回Web API的响应而不修改SQL上的基础用户表时,动态添加这两个属性的最简单方法是什么? 我知道我可以将这两个作为虚拟列添加到用户表中。 当我不需要它时,我不想在SQL端带来那些开销。