Questions tagged «asp.net-web-api»

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

19
Swagger UI Web Api文档将枚举形式表示为字符串吗?
有没有一种方法可以将所有枚举显示为字符串形式,而不是int形式? 我希望能够提交POST操作并根据其字符串值放置枚举,而不必每次都查看该枚举。 我试过了,DescribeAllEnumsAsStrings但是服务器然后接收字符串而不是我们想要的枚举值。 有人解决了吗? 编辑: public class Letter { [Required] public string Content {get; set;} [Required] [EnumDataType(typeof(Priority))] public Priority Priority {get; set;} } public class LettersController : ApiController { [HttpPost] public IHttpActionResult SendLetter(Letter letter) { // Validation not passing when using DescribeEnumsAsStrings if (!ModelState.IsValid) return BadRequest("Not valid") .. } // …

5
使用Volley和不使用HttpEntity的工作POST多部分请求
这并不是一个真正的问题,但是,我想在这里共享我的一些工作代码,以供您在需要时参考。 众所周知,HttpEntity自API22起已弃用该方法,并自API23起将其完全删除。目前,我们无法再在Android Developer上访问HttpEntity Reference(404)。因此,以下是我在带有Volley且没有HttpEntity的POST Multipart Request中工作的示例代码。工作正常,已通过测试Asp.Net Web API。当然,代码可能只是发布两个已存在的可绘制文件的基本示例,也不是所有情况下的最佳解决方案,而且调整也不佳。 MultipartActivity.java: package com.example.multipartvolley; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import com.android.volley.NetworkResponse; import com.android.volley.Response; import com.android.volley.VolleyError; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; public class MultipartActivity extends Activity …

14
Asp.NET Web API-405-不允许使用用于访问此页面的HTTP动词-如何设置处理程序映射
我使用ASP.NET Web API编写了REST服务。我正在尝试发送HttpDelete请求,但是出现以下错误: 405-不允许使用用于访问此页面的HTTP动词 我认为我已经接近解决方案,我发现我应该启用IIS远程管理,转到“处理程序映射”部分,然后将DELETE动词添加到适当的位置...但是问题在于,该位置有很多不同的位置列表...(如此处:http : //www.somacon.com/p126.php)。 我应该编辑哪一个?他们中很少有人没有扩展名,例如“ ExtensionUrlHandler-Integrated-4.0”,我向其中添加了DELETE动词,但它仍然无法正常工作... 修改它只是黑暗中的一枪,所以我应该修改其他位置吗?如果是这样,哪一个?也许还有什么我应该做的? 相同的Web服务在我的本地服务上运行良好,所以我想问题出在远程IIS上。 问候

9
点字符“。” 在MVC Web API 2中进行请求,例如api / people / STAFF.45287
我尝试使用的URL是以下格式的URL:http : //somedomain.com/api/people/staff.33311(就像LAST.FM的站点允许其RESTFul和WebPage url中包含各种符号一样,例如“ http://www.last.fm/artist/psy'aviah ”是LAST.FM的有效网址)。 在以下情况下有效:-http: //somedomain.com/api/people/-返回所有人-http: //somedomain.com/api/people/staff33311-也可以使用,但不是我所需要的我希望网址接受一个“点”之后的m,例如下面的示例-http: //somedomain.com/api/people/staff.33311-但这给了我一个 HTTP Error 404.0 - Not Found The resource you are looking for has been removed, had its name changed, or is temporarily unavailable. 我已经设置了以下内容: 控制器“ PeopleController” public IEnumerable<Person> GetAllPeople() { return _people; } public IHttpActionResult GetPerson(string id) { var person …

10
在ASP.NET Web API中处理ModelState验证
我想知道如何使用ASP.NET Web API进行模型验证。我有这样的模型: public class Enquiry { [Key] public int EnquiryId { get; set; } [Required] public DateTime EnquiryDate { get; set; } [Required] public string CustomerAccountNumber { get; set; } [Required] public string ContactName { get; set; } } 然后,我在API控制器中执行了Post操作: public void Post(Enquiry enquiry) { enquiry.EnquiryDate = DateTime.Now; context.DaybookEnquiries.Add(enquiry); …

9
确保控制器具有无参数的公共构造函数错误
我遵循了本教程,该教程效果很好,直到我修改了我的教程DbContext以拥有其他构造函数。我现在在分辨率方面遇到问题,不确定如何解决此问题。有没有一种简单的方法可以强制它抓住无参数的构造函数,或者我处理方法不正确? DbContext 有两个构造函数: public class DashboardDbContext : DbContext { public DashboardDbContext() : base("DefaultConnection") { } public DashboardDbContext(DbConnection dbConnection, bool owns) : base(dbConnection, owns) { } } SiteController 构造函数: private readonly IDashboardRepository _repo; public SiteController(IDashboardRepository repo) { _repo = repo; } 仓库: DashboardDbContext _context; public DashboardRepository(DashboardDbContext context) { _context = context; …

9
Web API 2:如何在对象及其子对象上返回带有camelCased属性名称的JSON
更新 感谢所有的答案。我正在一个新项目上,看来我终于明白了这一点:似乎实际上是以下代码导致的: public static HttpResponseMessage GetHttpSuccessResponse(object response, HttpStatusCode code = HttpStatusCode.OK) { return new HttpResponseMessage() { StatusCode = code, Content = response != null ? new JsonContent(response) : null }; } 别处... public JsonContent(object obj) { var encoded = JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore } ); _value …

16
“ Access-Control-Allow-Origin”标头包含多个值
我在客户端使用AngularJS $ http访问服务器端的ASP.NET Web API应用程序的端点。由于客户端托管在与服务器不同的域中,因此我需要CORS。它适用于$ http.post(url,data)。但是,一旦我对用户进行身份验证并通过$ http.get(url)发出请求,我就会收到消息 “ Access-Control-Allow-Origin”标头包含多个值“ http://127.0.0.1:9000、http://127.0.0.1:9000”,但只允许一个。因此,不允许访问来源“ http://127.0.0.1:9000”。 Fiddler向我展示了在成功的选项请求之后,get请求中确实存在两个标头条目。我在哪里和哪里做错了什么? 更新资料 当我使用jQuery $ .get而不是$ http.get时,出现相同的错误消息。因此,AngularJS似乎没有问题。但是哪里错了?

13
如何在ASP.NET Core Webapi控制器中读取请求正文?
我试图读取OnActionExecuting方法中的请求正文,但我总是喜欢null该正文。 var request = context.HttpContext.Request; var stream = new StreamReader(request.Body); var body = stream.ReadToEnd(); 我试图将流位置显式设置为0,但这也没有用。因为这是ASP.NET CORE,所以我认为情况几乎没有什么不同。我可以在这里看到所有有关旧webapi版本的示例。 还有其他方法吗?


6
需要将ASP.NET WebAPI 2请求和响应主体记录到数据库
我正在使用IIS上托管的Microsoft Asp.net WebApi2。我非常想记录每个帖子的请求正文(XML或JSON)和响应正文。 这个项目或处理帖子的控制器没有什么特别的。除非有必要,否则我对使用nLog,elmah,log4net等日志记录框架或Web API的内置跟踪功能不感兴趣。 我只是想知道将日志记录代码放在哪里,以及如何从传入和传出的请求和响应中获取实际的JSON或XML。 我的控制器发布方法: public HttpResponseMessage Post([FromBody])Employee employee) { if (ModelState.IsValid) { // insert employee into to the database } }

9
如何使用System.Net.HttpClient发布复杂类型?
我有一个想要使用Web API的自定义复杂类型。 public class Widget { public int ID { get; set; } public string Name { get; set; } public decimal Price { get; set; } } 这是我的Web API控制器方法。我想像这样发布这个对象: public class TestController : ApiController { // POST /api/test public HttpResponseMessage<Widget> Post(Widget widget) { widget.ID = 1; // hardcoded for …

5
Web Api的Xml文档如何包含主项目之外的文档?
用于将XmlDoc集成到Web Api项目中的文档似乎仅用于处理所有API类型都属于WebApi项目的情况。特别是,它讨论了如何将XML文档重新路由到App_Data/XmlDocument.xml配置中的一行并取消注释该行,该行将占用该文件。这隐含地只允许一个项目的文档文件。 但是,在我的设置中,我的请求和响应类型在常见的“模型”项目中定义。这意味着如果我定义了一个端点,例如: [Route("auth/openid/login")] public async Task<AuthenticationResponse> Login(OpenIdLoginRequest request) { ... } 在OpenIdLoginRequest单独的C#项目中定义where ,如下所示: public class OpenIdLoginRequest { /// <summary> /// Represents the OpenId provider that authenticated the user. (i.e. Facebook, Google, etc.) /// </summary> [Required] public string Provider { get; set; } ... } 尽管有XML文档,但是request当您查看特定于端点的帮助页面(即http://localhost/Help/Api/POST-auth-openid-login)时,该参数的属性不包含任何文档。 如何使带有XML文档的子项目中的类型出现在Web API XML文档中?

4
所请求的资源不支持HTTP方法“ GET”
我的路线已正确配置,并且我的方法具有修饰标记。我仍然收到“请求的资源不支持HTTP方法'GET'”消息吗? [System.Web.Mvc.AcceptVerbs("GET", "POST")] [System.Web.Mvc.HttpGet] public string Auth(string username, string password) { // Décoder les paramètres reçue. string decodedUsername = username.DecodeFromBase64(); string decodedPassword = password.DecodeFromBase64(); return "value"; } 这是我的路线: config.Routes.MapHttpRoute( name: "AuthentificateRoute", routeTemplate: "api/game/authentificate;{username};{password}", defaults: new { controller = "Game", action = "Auth", username = RouteParameter.Optional, password = RouteParameter.Optional }, constraints: …

4
错误:Access-Control-Allow-Headers不允许请求标头字段Content-Type
我使用vS2012创建了一个mvc4 Web API项目。我使用以下教程来解决跨域资源共享,“ http://blogs.msdn.com/b/carlosfigueira/archive/2012/07/02/cors-support-in-asp-net-web-api- rc-version.aspx”。它正在成功运行,并且我将数据从客户端成功发布到服务器。 之后,为了在我的项目中实施Autherization,我使用了以下教程来实现OAuth2:“ http://community.codesmithtools.com/CodeSmith_Community/b/tdupont/archive/2011/03/18/oauth-2-0-for -mvc-two-legged-implementation.aspx”。这有助于我在客户端获取RequestToken。 但是,当我从客户端发布数据时,出现错误, “ XMLHttpRequest无法加载http://。Access-Control-Allow-Headers不允许请求标头字段Content-Type。” 我的客户端代码看起来像 function PostLogin() { var Emp = {}; Emp.UserName = $("#txtUserName").val(); var pass = $("#txtPassword").val(); var hash = $.sha1(RequestToken + pass); $('#txtPassword').val(hash); Emp.Password= hash; Emp.RequestToken=RequestToken; var createurl = "http://localhost:54/api/Login"; $.ajax({ type: "POST", url: createurl, contentType: "application/json; charset=utf-8", data: JSON.stringify(Emp), …

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.