Questions tagged «asp.net-web-api»

ASP.NET Web API是用于为客户端(如浏览器和移动设备)构建HTTP服务的框架。它基于Microsoft .NET Framework,是构建RESTful服务的理想选择。

3
ASP.NET Web API身份验证
我希望在使用ASP.NET Web API时从客户端应用程序对用户进行身份验证。我已经观看了网站上的所有视频,还阅读了该论坛帖子。 [Authorize]正确放置属性将返回401 Unauthorized状态。但是,我需要知道如何允许用户登录到API。 我想从Android应用程序向API提供用户凭据,让用户登录,然后对所有后续API调用进行预身份验证。


2
从ASP.NET Web API返回HTML
如何从ASP.NET MVC Web API控制器返回HTML? 我尝试了以下代码,但由于未定义Response.Write,因此出现了编译错误: public class MyController : ApiController { [HttpPost] public HttpResponseMessage Post() { Response.Write("<p>Test</p>"); return Request.CreateResponse(HttpStatusCode.OK); } }

7
浏览器取消请求时,ASP.NET Web API OperationCanceledException
当用户加载页面时,它发出一个或多个ajax请求,这些请求命中ASP.NET Web API 2控制器。如果用户导航到另一个页面,则在这些ajax请求完成之前,浏览器将取消这些请求。然后,我们的ELMAH HttpModule为每个取消的请求记录两个错误: 错误1: System.Threading.Tasks.TaskCanceledException: A task was canceled. at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext() --- End of stack …

3
我可以同时使用SignalR和RESTful API吗?
我有一个使用ASP.NET开发的单页Web应用程序。最近,我使用SignalR库将许多Web方法转换为基于推送的方法。这确实大大加快了页面速度,并减少了页面中的许多服务器调用。 同时,我也一直在研究一些服务器端方法的RESTful ASP.NET WebAPI,其真正的美在于,它允许在开发应用程序的同时为外部应用程序创建API。核心应用程序(这对我的工作很重要)。 然而,在看了几篇文章和这 两个问题之后,push和WebAPI方法似乎是客户端-服务器通信的两个完全不同的范例。我敢肯定,我可以创建可以通过这两种协议访问的各种方法,但是我不确定是否存在陷阱或认为这很草率-也许有一种更优雅的方法可以实现我的目标对于。 当然,在某些情况下,我希望RESTful WebAPI通过SignalR集线器广播事件...相反(SignalR曾经需要访问WebAPI)似乎不太可能,但我想仍然可能。 有人这样做吗?有人对如何进行有任何建议或提示吗?在这里,最优雅的前进方向是什么?

4
通过ASP.NET Web API有效地使用异步/等待
我正在尝试async/await在我的Web API项目中使用ASP.NET 的功能。我不太确定这是否会对我的Web API服务的性能产生任何影响。请从我的应用程序下面找到工作流程和示例代码。 工作流程: UI应用程序→Web API端点(控制器)→Web API服务层中的调用方法→调用另一个外部Web服务。(这里有数据库交互等) 控制器: public async Task<IHttpActionResult> GetCountries() { var allCountrys = await CountryDataService.ReturnAllCountries(); if (allCountrys.Success) { return Ok(allCountrys.Domain); } return InternalServerError(); } 服务层: public Task<BackOfficeResponse<List<Country>>> ReturnAllCountries() { var response = _service.Process<List<Country>>(BackOfficeEndpoint.CountryEndpoint, "returnCountries"); return Task.FromResult(response); } 我测试了上面的代码并且正在工作。但我不确定这是否是的正确用法async/await。请分享您的想法。

4
使用HttpClient时记录请求/响应消息
我有一个方法可以像下面这样进行POST var response = await client.PostAsJsonAsync(url, entity); if (response.IsSuccessStatusCode) { // read the response as strongly typed object return await response.Content.ReadAsAsync<T>(); } 我的问题是如何获取从实体对象发布的实际JSON。我想记录已发布的JSON,因此无需我自己对json进行序列化就可以了。

5
捕获ASP.NET Web Api中所有未处理的异常
如何捕获ASP.NET Web Api中发生的所有未处理的异常,以便我可以记录它们? 到目前为止,我已经尝试过: 创建并注册 ExceptionHandlingAttribute 在中实现Application_Error方法Global.asax.cs 订阅 AppDomain.CurrentDomain.UnhandledException 订阅 TaskScheduler.UnobservedTaskException 在ExceptionHandlingAttribute成功处理时引发的控制器操作方法和操作筛选范围内,但其他异常没有被处理,例如例外: IQueryable动作方法返回的执行失败时引发的异常 消息处理程序(即HttpConfiguration.MessageHandlers)引发的异常 创建控制器实例时引发的异常 基本上,如果异常将导致向客户端返回500 Internal Server Error,我希望它被记录下来。实施Application_Error在Web窗体和MVC中做得很好-我可以在Web Api中使用什么?

3
Asp.net WebApi中的自定义授权-怎么了?
我正在阅读有关WebApi中授权的几种资源(书籍和答案)。 假设我要添加仅允许某些用户访问的自定义属性: 情况1 我已经看到了这种覆盖的 方法, OnAuthorization如果出现问题,它会设置响应 public class AllowOnlyCertainUsers : AuthorizeAttribute { public override void OnAuthorization(HttpActionContext actionContext) { if ( /*check if user OK or not*/) { actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized); } } } 情况#2 但我也看到了类似的示例,该示例也很重要, OnAuthorization但需要调用base: public override void OnAuthorization(HttpActionContext actionContext) { base.OnAuthorization(actionContext); // If not authorized at all, …

9
ASP Net Web API 2.1获取客户端IP地址
您好,我需要在Web api中获取请求某种方法的客户端IP,我尝试从此处使用此代码,但它始终返回服务器本地IP,如何以正确的方式获取? HttpContext.Current.Request.UserHostAddress; 来自其他问题: public static class HttpRequestMessageExtensions { private const string HttpContext = "MS_HttpContext"; private const string RemoteEndpointMessage = "System.ServiceModel.Channels.RemoteEndpointMessageProperty"; public static string GetClientIpAddress(this HttpRequestMessage request) { if (request.Properties.ContainsKey(HttpContext)) { dynamic ctx = request.Properties[HttpContext]; if (ctx != null) { return ctx.Request.UserHostAddress; } } if (request.Properties.ContainsKey(RemoteEndpointMessage)) { dynamic remoteEndpoint = …

4
从ASP.NET Web API重定向操作
我是ASP.NET 4.0 Web API的新手。我们可以在POST操作结束时重定向到另一个URL吗?Response.Redirect(url) 实际上,我是www.abcmvc.com通过Web API(例如www.abcwebapi.com/upload)从MVC应用程序(例如)上传文件的 这upload是POST操作。我将多部分表单发布到Web API上传控制器的发布动作中。上传后,我想重定向回www.abcmvc.com。 这可能吗?

5
那么,JSONP还是CORS?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 改善这个问题 我的WebAPI部署在Intranet环境中。这意味着安全不是我关心的问题。 似乎CORS 对客户更友好,更易于实现。 还有其他我可能错过的问题吗?

8
ASP.NET Web API中的自定义方法名称
我正在从WCF Web API转换为新的ASP.NET MVC 4 Web API。我有一个UsersController,我想有一个名为Authenticate的方法。我看到了如何执行GetAll,GetOne,Post和Delete的示例,但是如果我想在这些服务中添加其他方法怎么办?例如,我的UsersService应该有一个称为Authenticate的方法,他们在其中传递用户名和密码,但这是行不通的。 public class UsersController : BaseApiController { public string GetAll() { return "getall!"; } public string Get(int id) { return "get 1! " + id; } public User GetAuthenticate(string userName, string password, string applicationName) { LogWriter.Write(String.Format("Received authenticate request for username {0} and password {1} …

2
为什么要创建异步WebAPI操作而不是同步操作?
我在创建的Web API中执行以下操作: // GET api/<controller> [HttpGet] [Route("pharmacies/{pharmacyId}/page/{page}/{filter?}")] public CartTotalsDTO GetProductsWithHistory(Guid pharmacyId, int page, string filter = null ,[FromUri] bool refresh = false) { return delegateHelper.GetProductsWithHistory(CustomerContext.Current.GetContactById(pharmacyId), refresh); } 通过以下方式通过Jquery Ajax调用完成对此Web服务的调用: $.ajax({ url: "/api/products/pharmacies/<%# Farmacia.PrimaryKeyId.Value.ToString() %>/page/" + vm.currentPage() + "/" + filter, type: "GET", dataType: "json", success: function (result) { vm.items([]); var …

27
无法使用Json序列化Web API中的响应
我正在使用ASP.NET MVC 5 Web Api。我想咨询所有用户。 我写了api/users,我收到了: “'ObjectContent`1'类型未能序列化内容类型'application / json; charset = utf-8'的响应主体” 在WebApiConfig中,我已经添加了以下几行: HttpConfiguration config = new HttpConfiguration(); config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType); config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; 但这仍然行不通。 我的返回数据函数是这样的: public IEnumerable<User> GetAll() { using (Database db = new Database()) { return db.Users.ToList(); } }

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.