Questions tagged «asp.net-web-api»

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

11
WebAPI多个放置/发布参数
我正在尝试在WebAPI控制器上发布多个参数。一个参数来自URL,另一参数来自正文。这是网址: /offers/40D5E19D-0CD5-4FBD-92F8-43FDBB475333/prices/ 这是我的控制器代码: public HttpResponseMessage Put(Guid offerId, OfferPriceParameters offerPriceParameters) { //What!? var ser = new DataContractJsonSerializer(typeof(OfferPriceParameters)); HttpContext.Current.Request.InputStream.Position = 0; var what = ser.ReadObject(HttpContext.Current.Request.InputStream); return new HttpResponseMessage(HttpStatusCode.Created); } 正文的内容为JSON: { "Associations": { "list": [ { "FromEntityId":"276774bb-9bd9-4bbd-a7e7-6ed3d69f196f", "ToEntityId":"ed0d2616-f707-446b-9e40-b77b94fb7d2b", "Types": { "list":[ { "BillingCommitment":5, "BillingCycle":5, "Prices": { "list":[ { "CurrencyId":"274d24c9-7d0b-40ea-a936-e800d74ead53", "RecurringFee":4, "SetupFee":5 }] …

13
邮递员:发送嵌套的JSON对象
我正在使用ASP.NET Web API:http : //xyzdomain.com : 16845/ api/ returns/returns 给定Items一个集合,我如何使用Postman Chrome扩展程序向端点发送POST请求: [ { "Items": [ { "sku": "9257", "Price": "100", "Quantity": "500", "DiscountPercent": "1", "backordered": "2" } ], "order_id": "F429768865001", "status_code": "Shelf", "Exception": "no error" } ]


3
ASP.NET Web API中的用户身份验证
这个话题使我感到困惑。我是HTTP应用程序的新手,但需要开发一个iPhone客户端,该客户端从某个地方使用JSON数据。我之所以选择MS的Web API,是因为它看起来很简单,但是在进行用户身份验证时,事情变得非常令人沮丧。 在经过数小时的谷歌搜索后Authorize,我无法找到一个清晰的示例来说明如何对用户进行身份验证,这从登录屏幕一直到在我的ApiController方法上使用属性令我感到惊讶。 这不是问题,而是要求提供有关如何精确执行此操作的示例的请求。我看了以下几页: 确保ASP.NET Web API的安全 使用ASP.NET Web API的基本身份验证 即使这些内容解释了如何处理未经授权的请求,但这些内容都没有清楚地显示出诸如a LoginController或类似的东西来询问用户凭据并对其进行验证。 有人愿意写一个简单的例子或指出正确的方向吗? 谢谢。

9
如何在Web API消息处理程序中提取自定义标头值?
我目前在我的Web API服务中有一个消息处理程序,它可以覆盖“ SendAsync”,如下所示: protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { //implementation } 在此代码中,我需要检查一个名为的自定义添加的请求标头值MyCustomID。问题是当我执行以下操作时: if (request.Headers.Contains("MyCustomID")) //OK var id = request.Headers["MyCustomID"]; //build error - not OK ...我收到以下错误消息: 无法将[]的索引应用于类型为'System.Net.Http.Headers.HttpRequestHeaders'的表达式 如何通过传递给此重写方法的(MSDN文档)实例访问单个自定义请求标头?HttpRequestMessage

11
Web API 2和.NET 4.5.1迁移后不存在GlobalConfiguration.Configure()
我最近开始按照本指南进行操作,以将项目迁移到.NET 4.5.1和Web Api 2。 MS开发人员Rick Anderson要求您做的第一件事就是更改: WebApiConfig.Register(GlobalConfiguration.Configuration); 至 GlobalConfiguration.Configure(WebApiConfig.Register); 在global.asax文件中。但是当我尝试构建时,这给了我一个错误: 错误1'System.Web.Http.GlobalConfiguration'不包含'Configure'的定义 我的项目目前在MVC 5,Web Api 2和.NET 4.5.1上,但是我认为System.Web.Http仍然认为它是.NEt 4.0版本。 我该如何解决这个问题? 谢谢。 编辑: 这是我的程序集绑定: <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31BF3856AD364E35" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/> </dependentAssembly> <!-- <dependentAssembly> <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0"/> </dependentAssembly> <dependentAssembly> …

5
使用Request.CreateResponse的ASP.NET WebApi单元测试
我正在尝试为ApiController编写一些单元测试,并且遇到了一些问题。有一个很好的扩展方法,称为Request.CreateResponse,它对生成响应有很大帮助。 public HttpResponseMessage Post(Product product) { var createdProduct = repo.Add(product); return this.Request.CreateResponse(HttpStatusCode.Created, createdProduct); } 有什么方法可以模拟CreateResponse,而无需使用部分模拟或直接使用“ new HttpResponseMessage(...)”?

1
如何将Web API添加到现有的ASP.NET MVC(5)Web应用程序项目中?
假设在创建新的MVC(5)项目时忘记了选中Web API复选框(将其添加到项目中),那么您需要做些什么来添加Web API并使它正常工作? 有很多迁移问题,但是似乎没有一个完整的最新步骤可将Web API添加到MVC 5项目中,并且它似乎已经从一些旧的答案中改变了。 将Web API添加到MVC 4 添加GlobalConfiguration.Configure(WebApiConfig.Register)MVC 4

19
ASP.NET Web API-不允许放置和删除动词-IIS 8
我最近从Visual Studio 2010升级到了Visual Studio 2012 RC。安装程序还会安装IIS 8 Express,Visual Studio现在将其用作默认Web服务器。 IIS 8阻止了我的使用PUT AND DELETE动词的WEB API请求。IIS返回405错误The requested resource does not support http method 'PUT'。 我知道过去人们对此有疑问,并且在Stack Overflow上有关于它的几条消息。使用IIS 7 Express,解决方案是卸载WebDav。不幸的是,我看不到使用IIS 8的任何方法。 我已经尝试从applicationhost.config中删除WebDav部分,但这没有帮助。例如,我<add name="WebDAVModule" image="%IIS_BIN%\webdav.dll" />从配置文件中删除了。 我花了太长时间了。必须有一种简单的方法来启用PUT和DELETE吗?

4
如何在C#中编写JSON文件?
我需要在C#中使用JSON格式将以下数据写入文本文件。方括号对于使其成为有效的JSON格式很重要。 [ { "Id": 1, "SSN": 123, "Message": "whatever" }, { "Id": 2, "SSN": 125, "Message": "whatever" } ] 这是我的模型课: public class data { public int Id { get; set; } public int SSN { get; set; } public string Message { get; set;} }

10
ASP.NET WebApi与MVC?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 改善这个问题 使用ASP.NET MVC控制器,您可以公开不同格式的数据。AspNetWebAPI是专门为创建API而专门设计的,但是我可以使用MVC控制器轻松地做到这一点,我尚不清楚在什么情况下它会比传统的MVC控制器更好。我对WebApi的好处显而易见并且应该在我的应用程序中添加另一个复杂性层的场景感兴趣。 问题:就MVC而言,使用asp.net WebApi有哪些优点和/或缺点?

9
如何在ASP.NET Web API中设置下载文件名
在我的ApiController类中,我有以下方法可以下载服务器创建的文件。 public HttpResponseMessage Get(int id) { try { string dir = HttpContext.Current.Server.MapPath("~"); //location of the template file Stream file = new MemoryStream(); Stream result = _service.GetMyForm(id, dir, file); if (result == null) { return Request.CreateResponse(HttpStatusCode.NotFound); } result.Position = 0; HttpResponseMessage response = new HttpResponseMessage(); response.StatusCode = HttpStatusCode.OK; response.Content = new …

5
WebAPI 2中的DefaultInlineConstraintResolver错误
我正在使用Web API 2,并且在本地机器上使用IIS 7.5将POST发送到API方法时收到以下错误。 The inline constraint resolver of type 'DefaultInlineConstraintResolver' was unable to resolve the following inline constraint: 'string'. Line 21: GlobalConfiguration.Configuration.EnsureInitialized(); 我的API都无法使用IIS。但是,我可以使用IIS Express在Visual Studio中运行我的API项目,并成功对我的登录API进行POST,但是当我尝试对另一个API调用提出GET请求时,出现约束解析器错误。 为了解决此问题,我在Visual Studio中创建了一个全新的Web API 2项目,并开始一次将现有API导入到新项目中并运行它们以确保它们能正常工作。将IIS Express与该新项目一起使用,可以获得与现有API项目相同的精确结果。 我在这里想念什么?即使使用一个全新的项目,如果不遇到此约束解析器问题,我也无法发出GET请求。
140 c#  asp.net  api  iis  asp.net-web-api 


8
使用Json.Net序列化时指定自定义DateTime格式
我正在开发一个API,以使用ASP.NET Web API公开一些数据。 在一种API中,客户希望我们以yyyy-MM-dd格式显示日期。我不想为此更改全局设置(例如GlobalConfiguration.Configuration.Formatters.JsonFormatter),因为它非常特定于此客户端。我确实在针对多个客户的解决方案中进行了开发。 我能想到的解决方案之一是创建一个自定义JsonConverter,然后将其放入需要进行自定义格式设置的属性中 例如 class ReturnObjectA { [JsonConverter(typeof(CustomDateTimeConverter))] public DateTime ReturnDate { get;set;} } 只是想知道是否还有其他简单的方法可以做到这一点。

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.