Articles of asp.net web api

修改序列化ASP.NET WebAPI对象中的xml数组元素名称

在WebAPI控制器中返回对象列表时,我一直在努力输出自定义的根xml元素。 我的控制器方法看起来像这样: public List Get() { return repository.GetProducts(); } 它呈现像这样的xml输出: Product1 Product2 我想将更改为但还没有找到这样做的方法。 我尝试过DataContract和DataMember属性的不同变体无济于事。 有没有人知道是否有办法做我想做的事情,而不是将我的List对象包装在一个新类中并返回它?

我如何访问asp.net 5中的内部

在asp.net 5之前,我会在AssemblyInfo.cs中添加“internalsVisibleTo(some.namespace.name)” – 但我的WebApi项目中不再有assemblyInfo.cs。 如何将WebAPI项目中的内部暴露给我的unitTest项目?

是否有可unit testing的方法将文件上载到ASP.NET WebAPI?

我正在使用新的ASP.NET WebAPI的项目中工作。 我目前的任务是接受上传的文件。 到目前为止,我已经使用TDD来驱逐WebAPI代码,但我已经上传了一个墙。 我目前正在关注http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-2上的建议,但似乎没有完全可以将其从unit testing中推出。 为了获取文件和表单数据,我必须使用MultipartFormDataStreamProvider ,这是不可能模拟和/或覆盖的。 如果没有放弃我的TDD方法,我该怎么办? 这是示例中的代码: public Task PostFormData() { // Check if the request contains multipart/form-data. if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType); } string root = HttpContext.Current.Server.MapPath(“~/App_Data”); var provider = new MultipartFormDataStreamProvider(root); // Read the form data and return an async task. var task = Request.Content.ReadAsMultipartAsync(provider). ContinueWith(t => { if […]

从Javascript将文件对象传递给Web API

我试图通过Javscript web api调用的web api将文件从本地机器上传到sharepoint。 试图将文件对象从javascript传递到web api,但我继续得到错误,如类型错误,资源未找到等。任何人都可以帮助。 Javascript代码: $scope.Upload = function () { if (!window.FileReader) { alert(“This browser does not support the HTML5 File APIs”); return; } var element = document.getElementById(“uploadInput”); var file = element.files[0]; //var folderStructure = “/PublishingImages/Lists/Featured%20Stories/”; var parts = element.value.split(“\\”); var fileName = parts[parts.length – 1]; filename1 = fileName; var descriptionName = fileName; […]

如何在websocket请求期间validationJWT。 .net核心

我正在开发一个使用JWT身份validation和websockets的小型.net核心应用程序。 我已经成功实现了为标准web api控制器生成和validation令牌。 但是,我还想validationWebSocket请求的令牌,这当然不适用于[Authorize]属性。 我已经设置了我的中间件管道,如下所示: app.UseWebSockets(); app.Use(async (http, next) => { if (http.WebSockets.IsWebSocketRequest == false) { await next(); return; } /// Handle websocket request here. How to check if token is valid? }); // secretKey contains a secret passphrase only your server knows var secretKey = …..; var signKey = new SigningCredentials ( new SymmetricSecurityKey(Encoding.ASCII.GetBytes(secretKey)), […]

在服务器端提供指纹比较的最佳方法

我将通过WebAPI从服务器端提供指纹认证。 以下代码是指纹比较部分。 var allFingerprints = container.Fingerprints.OrderByDescending(p=>p.FingerprintID); List fmdList = new List(); foreach (var fp in allFingerprints) { fmdList.Add(Fmd.DeserializeXml(fp.FMD)); } IdentifyResult identifyResult = Comparison.Identify(customerFmd, 0, fmdList, thresholdScore, 2); 如果DB中有少量(<3000)指纹,我认为可以从DB读取指纹并进行比较。 但是,如果指纹的数量越来越大,服务器稍后会从客户端获得大量API调用,那么从数据库读取指纹并进行比较的最佳方法是什么? 我是否必须将指纹列表保留在内存中并进行比较? 感谢您提前提出的宝贵意见。

Adobe Sign(echo sign)API使用C#发送文档

好吧,我对使用API​​的理解有限 我试图掌握Adobe Sign API并且遇到了死胡同,在那里测试页面我输入了这个并且它有效 但我不知道如何在C#中做到这一点 我尝试了以下内容,但知道它错过了OAuth的东西,我只是不确定下一步该尝试什么。 顺便说一句foo.GetAgreementCreationInfo()只是获取屏幕截图中的字符串,我只是把它移出来,因为它很大而且丑陋 var foo = new Models(); var client = new RestClient(“https://api.na1.echosign.com/api/rest/v5”); // client.Authenticator = new HttpBasicAuthenticator(username, password); var request = new RestRequest(“agreements/{AgreementCreationInfo}”, Method.POST); request.AddParameter(“name”, “value”); // adds to POST or URL querystring based on Method request.AddUrlSegment(“AgreementCreationInfo”, foo.GetAgreementCreationInfo()); // replaces matching token in request.Resource IRestResponse response = client.Execute(request); var content […]

从对象类型System.Data.Spatial.DbGeography到已知的托管提供程序本机类型不存在映射

我正在使用DotNetNuke 7平台构建应用程序,并尝试将地理数据写入数据库。 以下是该项目的一些背景知识。 我在VS 2012中构建,刚刚从2008 R2升级到Server 2012。 DotNetNuke 7为数据层和WebAPI实现了PetaPoco。 我希望我提供的信息足以让我们了解问题。 我的代码在“rep.Insert(location);”行上失败了 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Net; using System.Web; using System.Net.Http; using System.Web.Http; using System.Data.Spatial; using DotNetNuke.Web.Api; using DotNetNuke.Data; namespace DotNetNuke.Modules.GeoLocations { public class LocationController: DnnApiController { [AllowAnonymous] [HttpPost] [ValidateAntiForgeryToken] public HttpResponseMessage addLocation(CP_Location submitted) { submitted.GeoCode = DbGeography.PointFromText(string.Format(“POINT({0} {1})”, submitted.Long, submitted.Lat), […]

将属性与用户的电子邮件一起使用

我已经看到[Authorize]属性采用了这样的AuthorizeAttribute.User属性[Authorize(“User=Alice, Bob”)] (其中Alice / Bob是用户名,我猜?)。 但是,在我的应用程序中,我注册的是用户的电子邮件地址。 [Authorize(“User=…”)]采取其他属性? 是否可以接收电子邮件(并且[Authorize(“User=alice@example.org, bob@example.org”)] ?毫不奇怪, MSDN页面不是很有帮助。 这是内置的这个function,还是我必须实现自己的自定义Authorize属性? 在上面链接的非常简短的MSDN页面上,Authorize属性上是否有完整参数列表的文档?

如果API速率限制超过使用WebApiThrottle – C#Web API,则阻止API请求5分钟

在Web API中有一个非常好的库WebApiThrottle用于API速率限制。 如Wiki页面上所述,我可以根据API调用的授权令牌头来限制API。 但是,如果此api速率限制超过,我怎样才能阻止接下来5分钟的api呼叫? 此外,并非在接下来的5分钟内任何请求都会重置超出限速的时间。 我检查了代码,但找不到此function。 如果有人可以提出建议吗?