Tag: asp.net web api

找到了与请求匹配的多个操作

我已经阅读了很多关于路由和控制器的问题,但我找不到我想要的东西。 我有这个结构的控制器: 更新:包含完整的类源。 public class LocationsController : ApiController { private readonly IUnitOfWork _unitOfWork; public LocationsController(IUnitOfWork unitOfWork) { _unitOfWork = unitOfWork; } // GET /api/locations/id public Location Get(Guid id) { return this.QueryById(id, _unitOfWork); } // GET /api/locations public IQueryable Get() { return this.Query(_unitOfWork); } // POST /api/locations public HttpResponseMessage Post(Location location) { var id = _unitOfWork.CurrentSession.Save(location); […]

使用JSON.NET反序列化字典

我正在使用版本4.0.8的Newtonsoft.Json并尝试将其与Web API一起使用。 所以我想用JST反序列化JSON JsonConvert.DeserializeObject(jsonString); 这有效,直到我将Dictionary作为属性添加到此类并想要反序列化它。 json字符串的forms为 { “Date”:null, “AString”:”message”, “Attributes”:[ {“Key”:”key1″,”Value”:”value1″}, {“Key”:”key2″,”Value”:”value2″} ], “Id”:0, “Description”:”… } 当反序列JsonSerializationException JsonSerializationException类型的exception时会JsonSerializationException以下消息:“ 无法将JSON数组反序列化为类型’System.Collections.Generic.Dictionary`2 [System.String,System.String]’。 ” 我在这做错了什么? UPDATE1:使用JSON.NET进行序列化时,我得到以下字典: Attributes”:{“key1″:”value1″,”key2″:”value2”} 似乎WebApi以不同于Json.Net的方式反序列化对象。 服务器端我使用以下行进行隐式反序列化: return new HttpResponseMessage(object); UPDATE2:作为一种解决方法,我现在来到了服务器端。 return new HttpResponseMessage(JsonConvert.SerializeObject(license).Base64Encode()); 我用Json.Net服务器端转换它并将其作为base64编码的字符串传输。 所以Json.Net可以反序化自己的格式。 但它仍然不是我想要的,那么还有什么进一步的建议吗?

由于Web API中的特殊字符,未设置发布值

我正在尝试为我的网络API服务发帖。 重点是发送消息时 { message: “it is done” } 工作正常。 但是当我在我的消息中使用像çıöpş这样的特殊字符时,它无法转换我的json以使post对象保持为null。 我能做什么? 这既是当前的文化问题,也可能是其他问题。 我试图将我的post参数发送为带有编码HttpUtility类的HtmlEncoded样式,但它也不起作用。 public class Animal{ public string Message {get;set;} } Web API方法 public void DoSomething(Animal a){ } 客户 Animal a = new Animal(); a.Message = “öçşistltl”; string postDataString = JsonConvert.SerializeObject(a); string URL = “http://localhost/Values/DoSomething”; WebClient client = new WebClient(); client.UploadStringCompleted += client_UploadStringCompleted; client.Headers[“Content-Type”] = […]

通用存储库,CreateObjectSet ()方法

我试图实现一个通用的存储库,我现在就有这个: using System; using System.Collections.Generic; using System.Linq; using System.Data; using System.Data.Entity.Core.Objects; using Web_API.Models; namespace Web_API.DAL { class GenericRepository : IRepository where T : class { private ApplicationDbContext entities = null; IObjectSet _objectSet; public GenericRepository(ApplicationDbContext _entities) { entities = _entities; _objectSet = entities.CreateObjectSet(); } … 我在使用此方法调用时遇到问题: entities.CreateObjectSet(); 它应该没问题,但我得到这个错误: 我已经将System.Data.Entity添加到我的项目中,此时我不知道还能做什么。 我正在关注本教程http://www.codeproject.com/Articles/770156/Understanding-Repository-and-Unit-of-Work-Pattern 。 有谁知道如何解决这个问题?

从MVC WebApi调用时挂起Git / SSH

我正在研究的项目的一部分(Windows,C#,MVC4 WebAPI)需要与git进行一些集成。 现有的C#git库都没有支持远程克隆,所以我最终移植了我们需要的JavaGit项目的部分(checkout,fetch,status),并自己编写了clone。 实际上它只是git命令行可执行文件的包装器。 它调用的相关代码在这里: public static void RunGitCommand(string repositoryPath, string gitArguments) { // GitCommand is the full path to git.exe (currently using Github for Windows) if (null == GitCommand || String.IsNullOrWhiteSpace(GitCommand)) { throw new FileNotFoundException(“Unable to find git.exe on your system PATH.”); } // gitArguments contains the command to run (eg “clone — git@repo:projectName […]

Webapi2 – 在一个任务完成后从控制器操作返回,但继续进一步的异步处理

我有一个关于Webapi2的问题 我的应用程序是完全async/await ,但我想优化最后一部分。 我很难找到,所以有什么办法可以做到以下几点吗? webapi2控制器的一个示例: private async Task Barfoo(Bar foo) { //some async function } public async Task Foo(Bar bar) { List tasks=new List(); var actualresult=Barfoo(bar.Bar); tasks.Add(actualresult); foreach(var foobar in bar.Foo) { //some stuff which fills tasks } await Task.WhenAll(tasks); return Ok(actualresult.Result); } 客户端只需要一个function,所以我想要的更像是: private async Task Barfoo(Bar foo) { //some async function } public […]

Unity:当前类型是一个接口,无法构造

得到以下代码开始 public interface IDataContextAsync : IDataContext { Task SaveChangesAsync(CancellationToken cancellationToken); Task SaveChangesAsync(); } public partial class DB1Context : DataContext{ } public partial class DB2Context : DataContext{ } 以下是UnityConfig文件。 注意:我正在使用Nuget bootstrapper for ASP.Net MVC,下面是我的UnityConfig文件 public static void RegisterTypes(IUnityContainer container) { container .RegisterType(“DB1Context”, new PerRequestLifetimeManager()) //.RegisterType(“DB2Context”, new PerRequestLifetimeManager()) .RegisterType( new PerRequestLifetimeManager(), new InjectionConstructor(new object[] {new RepositoryFactories()}) ) […]

c#已启用CORS的Web Api和所请求资源上存在可怕的“Access-Control-Allow-Origin”标头

我有一个C#Web API项目。 我使用Web API 2标准创建了一个Controller。 我试图只在一个动作上启用CORS,这就是我所拥有的: namespace MyProject.Controllers { public class MyControllerController : ApiController { // POST api/mycontroller [EnableCors(“http://link.myurl.com”, “*”, “*”)] public bool Post(MyCustomObject customObject) { // Function that returns Bool return myFunction(customObject); } } } 我的WebApiConfig.cs看起来像这样: // Web API configuration and services config.EnableCors(); // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: “DefaultApi”, routeTemplate: “api/{controller}/{id}”, defaults: […]

GROUP BY / Case Asp.Net Web API ODATA的不敏感扩展?

无法通过ODATA V4文档中的引用找到组。 当我们在URL中通过查询传递组时,它只返回键,而不是实际的分组结果。 在ODATA Web API的可扩展性点上,在Asp.Net ODATA中使用Group by的任何参考。 我们需要完全掌握如何解析ODATA查询并将其转换为LILNQ到实体查询。 我正在谈论拦截ODATA查询和执行手动定制的行,例如LINQ to Entities 我正在努力实现Case Sensitivity的类似扩展。 OData Case Web API中的In-Sensitive过滤?

发布和重定向FROM Web Api

警告: 这个问题不是关于如何发布到Web Api,是如何从Web Api发布。 场景: 我的问题与Darin Dimitrov的回答有关: 如何在ASPNET Web API中重定向 并且似乎是一个重复的: Response.Redirect,它将数据发布到ASP.NET中的另一个URL,但考虑到问题已经过时(2008),我正在寻找可能WebApi是最新的答案。 使用Visual Studio 2012 Web Api 2.1 我通过控制器中的POST方法获取应用程序中的数据(是一个web api)。 到现在为止还挺好。 现在我想将这些数据(带有一些更改)发布到接受我的数据的外部站点(这已经过validation并且可以正常工作)。 对于这个过程,我尝试了两种方法: 使用带有javascript的“onload”事件提交的基本表单创建一个字符串。 从( 将数据POST到ASP.NET中的另一个URL的Response.Redirect )。 这是有效的,这就是我使用它的方式,但也许可以用一些更好的方法来代替。 使用client.PostAsync 。 我也可以使用它,但我不想显示对用户的响应,我想重定向他。 也许这可以适应重定向? 题: 如何在不使用“onload”变通方法的情况下重定向发送Post变量,或者在不等待响应的情况下调整“HttpClient”以进行重定向后? 考虑:我不发布任何代码,因为我的两个选项的实现已经很容易,我没有任何问题。