BadRequest自定义错误消息未返回客户端?
我正在使用Web API 2应用程序,并且正在实现请求验证.我包括了一个看起来像这样的验证检查: if (string.IsNullOrEmpty(userCredentials.UserName)) return BadRequest("UserCredentials.UserName is required"); 按预期返回400个响应代码,但所提供的消息似乎未包含在返回给客户端的响应中.我是否缺少实施中的某些内容,还是有一种特殊的方法来处理客户收到的响应? 更新 BadRequest消息将返回到Postman,但是当我通过控制台应用使用C#调用它时,我无法找到验证消息.这是我在控制台应用中使用的代码: static async Task Authenticate(string domain, string userName, string password) { using (var client = GetHttpClien
0 2024-04-21
编程技术问答社区
网络API请求中的滑动会话
更新:看来它正在尝试在ApplyResponseGrantAsync中编写新的cookie标头,但不能,因为它已经发送了标头的例外./em> 更新:更清楚.在Web API请求期间,如何将Set-Cookie标题添加到XHR响应中? tl; dr; 问题是该应用程序已使用MVC进行身份验证,但大量使用Web API. Web API请求即使使用Authentication属性也不会滑动会话 - 几乎可以肯定,因为这是cookie响应. 我有一个组合的MVC和Web API应用程序.在大多数情况下,MVC视图只是加载SPA,它们提出了许多Web API请求. 这很好,除了会话滑动不适用于Web API请求. 我可以看到CookieAuthenticationHandler在ApplyResponseGrantAsync中滑动会话的位置,但是我需要强制每个Web API请求. model.Properties.IssuedUtc = new DateTimeOf
0 2024-04-21
编程技术问答社区
Angular用Web Api 2下载csv文件
我正在尝试使用Web API 2和Angular JS下载CSV文件. 这是我的控制器代码 public IHttpActionResult ExportCsvData() { var stream = new FileStream("Testcsv.csv", FileMode.Open, FileAccess.Read); var response = new HttpResponseMessage(HttpStatusCode.OK); response.Content = new StreamContent(stream); response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); response.Content.Headers.ContentDisposition = new ContentDisp
0 2024-04-21
编程技术问答社区
身份框架用户锁定
我试图在3次失败的登录尝试5分钟后锁定用户登录.我将这3行添加到App_Start/IdentityConfig.cs public static ApplicationUserManager Create( ... )方法: manager.MaxFailedAccessAttemptsBeforeLockout = 3; manager.DefaultAccountLockoutTimeSpan = new TimeSpan(0, 5, 0); manager.UserLockoutEnabledByDefault = true; 之后,我通过POST /api/Account/Register注册了新用户(默认脚手架AccountController).创建帐户,LockoutEnabled属性设置为true.但是,如果我尝试通过POST /Token使用错误的密码帐户登录几次. 我也很感兴趣/Token端点的实现.是在AccountController GET a
0 2024-04-21
编程技术问答社区
WebAPI 2.0帖子未反序列化List<T>属性
我已经回顾了我可以在这里找到的每条类似的文章,并尝试了任何看起来可能没有成功的东西(显而易见,因为我现在问这个问题). 我有一个WebAPI 2.0控制器,其中包含post动作,该操作带有类型Reservation的对象.此对象包含一个称为Items的属性,该属性为EquipmentItems.可以想象,这是列表属性.我发送预订对象(如果对任何人都很重要,请使用PostAsJsonAsync("api/Reservation", reservation).Result). 当我降落在API控制器中时,Reservation对象被完全填充了除EquipmentItems属性中的所有内容. 在全面披露的精神中,Reservation类中的Items属性实际上定义为t是IItemData接口的列表. EquimpentItem从IItemData tho继承,所以不确定这是否复杂. 本机控制器求职者可以不处理t接口的位置吗? 我所知道的工作是将列表定义为常规数组.
0 2024-04-21
编程技术问答社区
Serilog SelfLog to File错误
我需要启用Seri Logger的自记录到文本文件.我的配置如下; __serilogLogger = new LoggerConfiguration() .Enrich.WithProperty("ApplicationIPv4", _ipv4) .Enrich.WithProperty("ApplicationIPv6", _ipv6) .WriteTo.MSSqlServer(connectionString, tableName /*, columnOptions: columnOptions*/) .WriteTo .Seq(ConfigurationManager.AppSettings["SerilogServer"]) .CreateLogger(); var file = File.CreateText("Self.log"); Serilog.Debugging.S
0 2024-04-21
编程技术问答社区
Web Api 2: 值类型的[要求]?
在Web API输入模型中使用[Required]数据注释似乎检查了已实例化为NULL的参考类型: public class MyInputModel { [Required] // This works! ModelState fails. public CustomClass MyCustomProperty { get; set; } } 我们如何将其与不默认实例化的价值类型一起使用? public class MyInputModel { [Required] // This is ignored because MyDouble is defaulted to 0 public double MyDouble { get; set; } } 是使用Nullable的唯一方法?我们不能创建一些自定义验证属性吗? 解决方案 这就是所需属性在内部工作的方式. override bool IsValid
0 2024-04-21
编程技术问答社区
Windows Azure部署-不能加载文件或程序集'Newtonsoft.Json'。
我使用Web API创建了MVC 4应用程序.它在当地环境中效果很好.当我将其部署到Azure时,它会产生以下错误. 例外信息: 异常类型:httpexception 异常消息:无法加载文件或汇编'newtonsoft.json,版本= 6.0.0.0,文化=中性,publicKeyToken = 30AD4FE6B2A6AEED'或其依赖项之一.位置的组件的清单定义与汇编引用不符. (Hresult的例外:0x80131040) system.web.httpapplication.initspecial (httpapplicationstate statate,methodInfo []处理程序,intptr appContext,httpContext上下文) 无法加载文件或汇编'newtonsoft.json,版本= 6.0.0.0,culture =中性,publicKeyToken = 30AD4FE6B2A6AEED'或其依赖项之一.位置的组件的清单定义与汇编引用不
0 2024-04-21
编程技术问答社区
Api控制器有一个无参数的公共构造函数错误
我正在使用Unity进行DI,并且遇到了以下错误: - "尝试创建类型'uploadController'的控制器时发生错误.确保控制器具有无参数的公共构造函数." 我有以下UnityResolver: - public class UnityResolver : IDependencyResolver, IDependencyScope, System.Web.Http.Dependencies.IDependencyResolver { protected IUnityContainer container; public UnityResolver(IUnityContainer container) { if (container == null) { throw new ArgumentNullException("container"); } t
0 2024-04-21
编程技术问答社区
WebAPI传递的帖子参数为空
我正在使用WebAPI 2进行测试,并且我创建了以下控制器方法. // POST api/values public string Post([FromBody] string value) { string returnValue = "Return: " + value ; return returnValue; } 当我使用提琴手发布以下消息时,方法参数继续返回null. POST http://localhost:50814/api/Values/ HTTP/1.1 Host: localhost:50814 Content-Type: application/json Content-Length: 14 {value: "New"} 我已经尽可能多地为代码提供了很多,但仍然保持无效. 我认为我忽略了一些简单的东西,但我没有想法.有人可以帮我吗? 谢谢桑德 解决方案 如果您正在从控制器的帖子方法中获取一个简单的字符串,请
0 2024-04-21
编程技术问答社区
ApiController扩展方法-不能访问ResponseMessage
我想为apicontroller创建扩展方法以返回自定义内容. 我的想法是通过我自己的详细信息返回自定义错误. 我想返回类似于OAuthAuthorizationServerProvider返回的错误的自定义错误: { "error": "invalid_grant", "error_description": "You have 3 more attempts before Your account will be locked." } 在我的apicontroller内部,我添加了此方法: public IHttpActionResult Test() { HttpError err = new HttpError(); err["error"] = "40001"; err["error_description"] = "Something is wrong"; var response = Request.CreateEr
0 2024-04-21
编程技术问答社区
控制器动作中的长期运行方法-MVC
我的方法与WebAPI - MVC 中的以下方法类似 public IActionResult Post(Model model) { ALongRunningMethod(); return Ok(); } 我有两个选择. 等待该方法完成.但是,如果太久了怎么办? API超时吗? 使用Tasks>返回Ok (200 HTTP Code) immediately在单独的线程中运行该操作?如果在那长期运行的方法中发生一些例外怎么办? 完全困惑.在这种情况下我该怎么办? 解决方案 这是Web应用程序中的常见问题.我将创建一个GUID,将其传递到任务,运行任务,传递GUID.同时,任务将继续.如果您有一个数据库,则可以将GUID从任务中保存到DB,表明某些状态.例如您可以使用一个名为"任务"的数据库表TaskID和Status. . 然后,您可以使用GUID定期检索任务状态. 评论者说ASP.NET中的长期任务是一款危险的游戏是正
0 2024-04-21
编程技术问答社区
'参数字典包含一个空条目'错误,Web API
在我的Web API上,我有一个文档控制器,具有两个简单的操作: [AllowAnonymous] public class DocumentController : ApiController { public String Get(int id) { return "test"; } public String Get(string name) { return "test2"; } } 以下URL(执行第一个功能)工作正常: http://localhost:1895/api/api/document/document/5 但是此URL(应执行第二个功能): http://localhost:1895/api/api/document/test 引发此错误: { "消息":"请求无效.", " MessagedEtail":"该参数字典包含一个无效类型的
0 2024-04-21
编程技术问答社区
在ASP.NET Boilerplate中上传图片
发布图像时,HttpContext.Current.Request是null. 有什么简单的方法可以实现这一目标吗?我在客户端使用 dropzone.js . 项目与Web API(ASP.NET Core 2.0)模板是角度. [HttpPost] public HttpResponseMessage UploadJsonFile() { HttpResponseMessage response = new HttpResponseMessage(); var httpRequest = HttpContext.Current.Request; if (httpRequest.Files.Count > 0) { foreach (string file in httpRequest.Files) { var postedFile = httpRe
0 2024-04-21
编程技术问答社区
WebAPI 2 带有区域的属性路由不能工作
我很难获得WebAPI 2属性路由进行工作.我要寻找的路由方案是/api/{product}/{controller}/{id-optional},所以像/api/Vision/IdCard.控制器在一个区域中,并以此为设置: namespace DataServices.Controllers.Vision { [RoutePrefix("api/vision")] public class IdCardController : BaseApiController { [System.Web.Mvc.RequireHttps] [Route("idcard")] public IdCardViewModel Get(HttpRequestMessage request) {...} 每当我做到这一点时,我都会得到 404 .我将命名空间包括
0 2024-04-21
编程技术问答社区
拒绝WebAPI模型属性中的HTML
我已经搜索了一段时间,找不到任何东西,如果有东西,我很抱歉. Web-API 2框架中是否有任何内容会自动拒绝字符串模型属性上的HTML标签(选择少数几个)? 我知道我可以创建一个自定义验证属性,并在每个属性上重击它,但这是很多要维护和记住在所有新型号上做的事情. public class Person { public string Name{ get; set; } // ... snipped } 我可以向我的POST端点提出帖子请求,与JSON类似: { "name": " This is my name " } 在操作中,person.Name等于" This is my name ",而没有验证错误 解决方案 我正在寻找和您相同的东西.从MVC的角度来看,我们有参数可以在形式的输入字段中禁止HTML,这似乎是合理的. 我找到了这个图书馆,在某种程度上可能会有所帮助...它并不能以
0 2024-04-20
编程技术问答社区
Webapi-如何从令牌中获取用户ID
我有WebAPI应用程序,并在ApplicationOauthProvider类中添加了userId: public override Task TokenEndpoint(OAuthTokenEndpointContext context) { foreach (KeyValuePair property in context.Properties.Dictionary) { context.AdditionalResponseParameters.Add(property.Key, property.Value); } context.AdditionalResponseParameters.Add("ID", context.Identity.GetUserId()); return Task.FromResul
0 2024-04-20
编程技术问答社区
ASP.NET Web API 2: 异常记录器和异常处理程序
我正在尝试在Web API中实现全局异常记录,并使用该错误ID向用户发送Frienldy消息,因此他可以使用错误ID回到我们身边,以便我们可以对其进行修复.我正在实施这两个: system.web.http.exceptionhandling.exceptionlogger system.web.http.exceptionhandling.exceptionhandler 这是我的班级,它覆盖了异常摘要类: public class GlobalExceptionLogger : System.Web.Http.ExceptionHandling.ExceptionLogger { public override void Log(ExceptionLoggerContext context) { LogMessage logMsg = new LogMessage(); logMsg.ID = System.Guid
0 2024-04-20
编程技术问答社区
当返回HttpResponseMessage和Application Insights被配置时,WebAPI响应从未完成
我有一个MVC5/WebAPI2应用程序,该应用程序自我创建Web项目以来已启用了应用程序见解. 返回对象(例如字符串,模型对象)的WebAPI方法按预期返回 - 序列化为JSON或XML. public class TestController : ApiController { [HttpGet] [AllowAnonymous] async public Task ReadString(int id) { HttpResponseMessage response = Request.CreateResponse(); string str; using (HttpClient client = new HttpClient()) { Uri uri = new Uri("http://someurl.com/resource.r
0 2024-04-20
编程技术问答社区
自定义Json.NET JsonConverter在反序列化Web.API参数时未被调用
我有一个web.api端点,将这样的对象作为参数: public class Person { public string FirstName { get; set; } public string LastName { get; set; } public int Age { get; set; } public UserName UserName { get; set; } } 例如: [Route("api/person")] [AcceptVerbs("POST")] public void UpdatePerson(Person person) { // etc. } 我已经定义了一个自定义的jsonconverter,可以从json字符串属性转换为我的自定义UserName类: public class UserNameJsonDeserializer : JsonConverter { public
0 2024-04-20
编程技术问答社区