Tag: asp.net web api

WIF身份委派给WebAPI REST服务

我读过这篇文章: 使用AD FS 2.0的身份委派分步指南 ,介绍如何使用WIF从ASP.NET应用程序到后端WCF服务执行身份委派。 我目前有一个ASP.NET WebAPI REST服务,我希望能够使用身份委派从我的ASP.NET应用程序调用,但我找不到任何有关如何实现此目的的信息。 上面提到的technet文章使用CreateChannelActingAs使用调用用户的安全令牌创建到WCF服务的通道,但显然这种方法不适用于REST API。 任何人都可以指向我任何文章或提供如何使用WIF将身份委托给我的REST服务的描述吗? 我的WebAPI REST服务应用程序已经在Thinktecture的这个库的帮助下使用WIF身份validation进行设置和工作。

更改Asp.net标识的主键和GetUserID

我正在创建一个WebAPI(OData)项目,并使用Asp.Identity进行用户管理。 我已经阅读了ASP.NET身份中用户的更改主键 ,一切都按规定工作,我不知道如何配置Bearer令牌。 在Tom FitzMacken的示例中,他按如下方式配置Cookie身份validation。 app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString(“/Account/Login”), Provider = new CookieAuthenticationProvider { OnValidateIdentity = SecurityStampValidator .OnValidateIdentity( validateInterval: TimeSpan.FromMinutes(30), regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager), getUserIdCallback:(id)=>(id.GetUserId())) } }); 这是我的身份validation代码,取自Mike Wasson的优秀文章, 在ASP.NET Web API 2.2中使用个人帐户和本地登录保护Web API // Configure the application for OAuth based flow PublicClientId = “self”; OAuthOptions = new […]

使用命令参数的Web API不返回任何数据

用于查询oracle数据库的Web API,它接收字符串数组作为输入参数。 我试图使用命令参数来避免SqL注入,但下面的代码不会抛出任何错误,但不会给出结果。 public class PDataController : ApiController { public HttpResponseMessage Getdetails([FromUri] string[] id) { List prms = new List(); string connStr = ConfigurationManager.ConnectionStrings[“PDataConn”].ConnectionString; using (OracleConnection dbconn = new OracleConnection(connStr)) { var inconditions = id.Distinct().ToArray(); var srtcon = string.Join(“,”, inconditions); DataSet userDataset = new Dataset(); var strQuer = @”SELECT STCD_PRIO_CATEGORY_DESCR.DESCR AS CATEGORY, STCD_PRIO_CATEGORY_DESCR.SESSION_NUM AS SESSION_NUMBER, […]

仅在调用控制器操作时才知道数据库名称时注入DbContext

我有一个WebAPI / EF Core后端应用程序,有几个可能的客户端数据库连接到(每个相同的模式,但一次只有一个)。 在访问WebAPI控制器之前,不知道要连接到哪个数据库。 到那时,使用对starup.cs文件的ConfigureServices()方法中的services.AddDbContext ()的调用,将DBContext添加为可注入对象为时已晚。 由于每个请求都隔离了DbContext的每个实例,直接从控制器的操作实例化DbContext是否有任何问题,而不是通过使用DI传递它?

url中的冒号(:)导致asp.net中出错

我正在创建一个webAPI,当我在请求字符串中包含冒号(:)时, http:// localhost:49579 / api / mycontroller / : 我收到此错误: 从客户端(:)检测到潜在危险的Request.Path值。 [HttpException(0x80004005):从客户端(:)检测到一个潜在危险的Request.Path值。] System.Web.HttpRequest.ValidateInputIfRequiredByConfig()+9673044 System.Web.PipelineStepManager.ValidateHelper(HttpContext context)+53 我不打算在api的实际请求中包含特殊字符,但如果某些不好的用户在请求中输入特殊字符,则会导致错误。 问题:如何在API端处理此错误? 有什么办法吗? 或者我应该给开发人员一个关于这个问题的说明? 注意:我无法控制将要访问API的未来客户端。 我正在使用Visual Studio 2012 for Web; .Net 4.0版; ASP.Net WebApi; 和C#; 我认为代码对我的情况来说是不必要的,Api除了那些特殊字符外都有效。 但如果你不这么认为,请告诉我你还需要知道什么。 另一个注意事项:我并没有试图找到在url中允许它的方法,我只是想找到专门处理错误的方法。

用于多部分视图的角度控制器结构

我需要使用AngularJS和web api在SPA中创建此布局。 工作流程如下: 当控制器加载时,从api获取两组数据(上面的表和左边的表 – 例如2次调用api / data1和api / data2 ) 一旦用户单击上表中的行,详细信息就会被提取到右侧的框中( api / data1 / 3434 / detail ) 当用户单击详细信息框中的某些条目时,相关条目将在左侧表格中突出显示。 我开始创建一个包含所有内容的视图,也是一个暴露所有必要内容的属性的控制器,但现在它看起来像这样(伪) myPageController table1Data : Array; table2Data : Array; userSelectedFromTable1 : IData1Model; userSelectedFromTable2 : IData2Model; 我觉得这不是很好的做法。 有没有办法将零件细分为某种局部视图? 子控制器? 或者这是一种常见的方法吗? 当他要为多种数据/ api端点服务时,通常的控制器会是什么样子? 编辑 我应该澄清,这只是一个更大的应用程序的一个特定页面(部分)。 大多数部件只是一种数据的前端,例如一个控制器,一个模型,一个api调用等。将页面视为某种仪表板,其中显示多个数据并相互交互。

Xamarin.Forms:如何从Web API数据填充饼图?

今天是个好日子。 我正在创建一个Xamarin.Forms便携式应用程序。 我目前正在编写一个包含静态数据的 PieChart(OxyPlot)。 我想要做的是在我拥有的每个Pie Slice中都有一个动态数据 。 意思是,数据应来自我的数据库。 我已经能够从我的数据库中检索数据并将其显示为我正在使用Web Api创建的移动应用程序中的List ,如下所示: ClientListPage.xaml ClientListPage.xaml.cs using Newtonsoft.Json; using OxyPlot; using OxyPlot.Series; using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; using System.Windows.Input; using Xamarin.Forms; using XamarinFormsDemo.Models; using XamarinFormsDemo.ViewModels; namespace XamarinFormsDemo.Views { public partial class ClientListPage : ContentPage { CustomerVM viewModel; public ClientListPage() […]

WebAPI慢速首次调用服务

我遇到了WCF问题和启动时间慢,所以我将所有代码都切换为使用WebAPI。 虽然启动时间已大规模缩短(约8-15秒降至~2),但启动时仍有奇怪的延迟。 目前约为2秒但随后的呼叫始终低于0.5秒,直到发生超时。 我查看了所有ApplicationPool设置,以确保没有任何启动延迟或空闲超时设置。 我发现这个链接很慢第一次调用Web服务 ,这对我没有帮助 – 我仍然在冷启动时获得相同的速度问题。 也发现这一个第一次调用Web服务每天都很慢似乎并不适用于我。 我在我的WebAPI服务上启用了跟踪,发现我的第一个和第二个调用之间的唯一区别是显示WebHostHttpControllerTypeResolver.GetControllerTypes两行。 我似乎无法找到太多关于这一点但它是我能看到的唯一区别。 是否有任何其他类型的日志记录可用于确定实际发生的情况?

Json Value不分配给List

由于我是web api的新手,我发现将json List到Web API有些困难。 Json [ { “ItemId”:20, “RegId”:”VISIT0001778″, “BLoadDetailId”:”8/31/2018 12:28:10 PM”, “OrderReferenceNo”:null, “StartTime”:”0001-01-01T00:00:00″, “InvalidItemMsg”:””, “InvalidItemstatus”:false, “BLoadingBay”:”Chute 009″, “BLoadingBayCode”:null, “BLoadingBayID”:7, “RFID”:7123, “GangId”:2, “BOrderTransfer”:false, “BLoadedBags”:0.0, “BRemainingBags”:0.0, “BConversionValue”:null, “WHid”:2 } ] 课程: public class clsStartTimeUpdate { public int ItemId { get; set; } public string RegId { get; set; } public string BLoadDetailId { get; set; } […]

WebApi 2 – RAM使用情况

我在共享主机上运行我的Web服务,它在应用程序池上提供高达100MB的RAM。 我的Web服务有大约12个控制器并使用异步entity framework+使用缓存: https : //github.com/filipw/AspNetWebApi-OutputCache 为了测试,服务响应非常少量的数据 – 例如,20个客户的列表,包括他们的地址和联系人数据,没有图像等。 启动(第一次请求)后,Web服务在另外几个请求后使用最多144MB RAM,大约250-350MB使用RAM – 比服务器回收我的服务。 这个数据量和控制器的RAM使用率是否正常? 或者是否存在优化问题? 我是WebApi的新手,我正在研究我的论文,但我尝试使用Entity Framework等对数据库进行异步访问。 编辑:我在服务器上设置32位模式后,RAM使用率约为100-130Mb,这比以前明显更好,但我仍然不确定它是否是好结果。 在这里,我包括我的控制器样本,以获取所有客户列表: // READ ALL -GET // ROUTE /api/Customers/ [HttpGet] [CacheOutput(ClientTimeSpan = 30, ServerTimeSpan = 86400)] public async Task GetCustomers() { using (var db = new ApplicationDbContext()) { var customers = await db.Customers .Include(s => s.Address) .Include(s => […]