Tag: asp.net web api

具有子集合的AngularJs Post Object到MVC WebAPI

我正在开发一个AngularJS应用程序,并且服务js中的一个方法将数据发布到具有C#中以下对象结构的web api public class InvitationModel { public string Name { get; set; } public string Email { get; set; } public EventModel[] EventList { get; set; } } public class EventModel { public string EventName { get; set; } public int TotalAdults { get; set; } public int TotalChildren { get; set; } public bool […]

尝试使用.netstandard 2程序集时,Web Api 2运行时错误

我有一个Asp.net WebApi 2站点引用.net 4.6.1。 到目前为止,该网站引用了PCL程序集(便携式类库),与UWP和Xamarin兼容,没有任何问题。 现在我正按照建议将该PCL更改为NetStandard2.0程序集,但在站点启动时收到错误。 错误如下 – 找不到方法:’System.Collections.ObjectModel.Collection`1 System.Web.Http.HttpConfiguration.get_MessageHandlers()’。 有任何想法吗? 谢谢

如何在客户端加密OData请求有效负载(DataServiceContext)和在ServerSide上解密请求?

我有一个Windows应用程序使用DataServiceContext消费OData v4 WebAPI。 WebApi通过SSL,但我认为任何人都可以使用像fiddler这样的Web调试工具(在Windows应用程序主机上)来捕获请求,并且可以通过更改请求主体来重新发出请求。 所以,如果我可以使用生产环境中的公钥/私钥加密Windows应用程序中的传出请求的RequestBody ,我还在想。 如果是,我怎么可以? 我是否需要创建自定义DataServiceClientRequestMessage或需要在DataServiceContext中的某处挂钩加密过程。 请求将使用MessageHandler解密。 ServiceStack加密消息传递

错误500 Web API

过去4个小时我一直试图解决这个问题。 我有一个新的Web API项目 – 在开发上100%正常工作, 但是在实时服务器上我得到500 Internal Server Error 。 当我部署新版本并直接向http://URL/Action发送请求时,我收到错误。 但是,如果我转到http://URL/ first然后将POST请求发送到http://URL/Action ,它可以工作。 如果没有对API提出12,13 hours请求,情况也是如此 因此,首先我必须打开: http://URL/Action ,然后发送POST请求。 所以Project使用Ninject ,这是Startup.cs using System.Collections.Generic; using System.Reflection; using System.Web.Http; using API.MyApi; using Business.Bindings; using Microsoft.Owin; using Ninject; using Ninject.Modules; using Ninject.Web.Common.OwinHost; using Ninject.Web.WebApi.OwinHost; using Owin; [assembly: OwinStartup(typeof(Startup))] namespace API.MyApi { public class Startup { public void Configuration(IAppBuilder […]

DelegatingHandler在WebApi中解压缩传入的请求

在我的应用程序中,我们从客户端发送适当大小的数据包并接收相当大的响应,所以我想在上升和返回的过程中实现一些压缩。 在回来的路上很好,因为我可以依靠IIS的动态压缩来为我做这件事,但在上升的过程中,我发现了以下问题。 我有一个委托处理程序,用于解压缩传入的请求:(大部分代码基于Fabrik.Common的部分( https://github.com/benfoster/Fabrik.Common )) public class DecompressionHandler : DelegatingHandler { public Collection Compressors; public DecompressionHandler() { Compressors = new Collection {new GZipCompressor(), new DeflateCompressor()}; } protected async override Task SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) { if (request.Content.Headers.ContentEncoding.IsntNullOrEmpty() && request.Content != null) { var encoding = request.Content.Headers.ContentEncoding.First(); var compressor = Compressors.FirstOrDefault(c => c.EncodingType.Equals(encoding, StringComparison.InvariantCultureIgnoreCase)); if (compressor […]

共享资源锁

我在.NET 4.5上使用C# – Web API Self Host。 服务器端我有一个非线程安全的进程:它可以一次处理一个请求。 如何在控制器代码中锁定此资源(进程),以便按顺序提供客户端,等待资源在使用之前被释放? 就像是: while(true){ if(!process.isLocked) break; } lock(process) do(work) unlock(process) warn(others) 任何代码段或建议都表示赞赏。 提前致谢。

HTTP代码405(方法不允许),当我在ASP.NET WebAPI CORS中发送POST数据时

Web.config文件 调节器 [EnableCors(origins: “http://domain/api/Clients”, headers: “*”, methods: “*”)] public class ClientsController : ApiController { private ParaNewnergyEntities db = new ParaNewnergyEntities(); // GET: api/Clients public IEnumerable GetClient() { return db.Client.ToList(); } [HttpPost] public IHttpActionResult PostClient(String Username, String Password) { Client c = new Client { Username = Username, Password = Password }; db.Client.Add(c); db.SaveChanges(); return Ok(c); […]

.NET Core – 尝试将存储库添加到我的API控制器,但是当我执行每个控制器方法时都会返回500错误

正如标题所说。 我正在创建一个Web API,在我的API控制器中,我正在尝试在构造函数中声明一个存储库。 我成功声明了它,但我尝试在该控制器中调用的每个API方法都返回500错误。 当我删除构造函数/存储库变量时,我没有问题。 调节器 [Route(“api/[controller]”)] public class TestController: Controller { private ITestRepository _testRepository; public TestController(ITestRepository testRepository) { _testRepository= testRepository; } [HttpGet] public IEnumerable Get() { return new string[] { “value1”, “value2” }; } } Startup.cs public void ConfigureServices(IServiceCollection services) { // Add framework services. services .AddMvcCore() .AddJsonFormatters() .AddApiExplorer(); services.AddScoped(); services.AddSwaggerGen(); } 我错过了什么吗?

为什么这个代码在通过TPL / Tasks执行时会失败?

我正在使用System.Net.Http来使用网络资源。 在单个线程上运行时,它可以完美运行。 当我通过TPL运行代码时,它会挂起并且永远不会完成,直到达到超时。 所发生的是所有线程最终都在sendTask.Result行上等待。 我不确定他们在等什么,但我认为它是HttpClient中的东西。 网络代码是: using (var request = new HttpRequestMessage(HttpMethod.Get, “http://google.com/”)) { using (var client = new HttpClient()) { var sendTask = client.SendAsync (request, HttpCompletionOption.ResponseHeadersRead); using (var response = sendTask.Result) { var streamTask = response.Content.ReadAsStreamAsync(); using (var stream = streamTask.Result) { // problem occurs in line above } } } } 我使用的TPL代码如下。 Do方法包含上面的代码。 […]

WebApi XML反序列化 – 具有多个子节点的节点未正确反序列化为子节点对象数组

我试图通过将XML发布到WebApi POST方法来反序列化XML。 除了具有多个子节点的节点外,一切正常并且反序列化没问题。 代码如下所示: [Serializable] public class grandparentnode { [XmlElement] public parentnode[] parentnode { get; set; } } [Serializable] public class parentnode { public childnode childnode { get; set; } } [Serializable] public class childnode { public string foo { get; set; } public string bar { get; set; } public string baz { get; […]