Tag: asp.net web api

在Web API中将包含JToken的对象序列化为XML时的循环引用exception

在我的数据库中,我有一个包含许多列的表,其中一个包含一个JSON字符串(我无法控制它)。 像这样的东西: Name Age ExtraData —- — —————— Bob 31 {c1: “1”, c2: “2”} <– string with JSON 我的Web API端点必须返回XML或JSON,具体取决于请求中的Accept标头。 像这样的东西: JSON: { “Name”: “Bob”, “Age”: 31, “ExtraData”: { “c1”: 1, “c2”: 2 } } XML: Bob 31 1 2 为此,我在C#中创建了一个类,如下所示: public class Person { public string Name { get; set; } public int Age […]

C#文件下载已损坏

我在一个Web API项目的实用程序中有一些C#。 代码的上传部分工作正常; 我已经validation了获取服务器的文件与上传的文件相匹配。 但是,下载中发生的某些事情导致客户端将文件视为已损坏,当我执行差异时,我可以看到出现问题。 不幸的是,我无法弄清楚我做错了什么。 该实用程序的相关部分如下: public static HttpResponseMessage StreamResponse(this HttpRequestMessage request, Stream stream) { if (stream.CanSeek) stream.Position = 0;// Reset stream if possible HttpResponseMessage response = request.CreateResponse(HttpStatusCode.OK); response.Content = new StreamContent(stream); if (stream is FileStream) {// If this is a FileStream, might as well figure out the content type string mimeType = MimeMapping.GetMimeMapping(((FileStream)stream).Name); […]

WebApi用于Get和Post的不同DTO

对于GET和POST操作,可以使用不同的DTO吗? 原因是这两种数据模型之间通常存在巨大差异。 例如: 我的POST看起来像这样: /// /// Add new user /// /// User data /// Newly added user id [HttpPost] public IHttpActionResult Post([FromBody] UserDto item) { if (!ModelState.IsValid) { return BadRequest(ModelState); } var model = _mapper.Map(item); int itemid = _usersRepository.Insert(model); return Ok(itemid); } public class UserDto { private string _password; [Required] [StringLength(100, ErrorMessage = “Name {0} […]

ASP.NET MVC / Web API自定义身份validation

我有ASP.NET MVC 4 / Web API混合应用程序。 身份validation由现有应用程序处理。 在考虑保护这些类型的应用程序时,大多数文章都指向使用表单身份validation以及要保护的MVC和API控制器/操作上的[Authorize]属性。 我想使用[Authorize]属性,因为它将处理MVC路由和API路由,但不知道如何在没有实际表单和使用内置成员资格提供程序的情况下执行此操作。 我应该采用这里描述的简单方法吗? 或者我应该创建一个处理逻辑的自定义成员资格提供程序? 为清楚起见,工作流程如下: 用户通过现有的身份validation门户登录。 如果经过身份validation,它们会被重定向到我的应用程序以及一些其他数据,例如用户名和电子邮件(因此不需要传输密码) 我的应用程序设置了一个允许用户继续使用该应用程序的身份validationcookie。 任何帮助将不胜感激。

要调用此方法,“Membership.Provider”属性必须是“ExtendedMembershipProvider”的实例

我遇到了这个错误,我无法弄明白。 我通过Chrome中的PostMan将数据发布到我的控制器,达到CreateUserAndAccount方法,并收到此错误: To call this method, the “Membership.Provider” property must be an instance of “ExtendedMembershipProvider”. 这是我的控制器: [System.Web.Http.Authorize] [InitializeSimpleMembership] public class AccountController : ApiController { // POST: /api/register [System.Web.Http.HttpPost] [System.Web.Http.AllowAnonymous] [ValidateAntiForgeryToken] //public HttpResponseMessage Register(RegisterModel model, string returnUrl) public HttpResponseMessage Register(RegisterModel model) { if (ModelState.IsValid) { // Attempt to register the user try { WebSecurity.CreateUserAndAccount(model.UserName, model.Password); // […]

Web API在运行时对属性进行条件序列化

我正在寻找在ASP.Net中使用WebAPI构建API。 我要求在RunTime而不是Compile Time根据某些自定义逻辑有条件地从XML或JSON中排除属性。 我必须从响应中删除xml或json,仅包含null或空值的标记并不好。 我尝试了各种方法,但我似乎无法开始工作。 我尝试了以下内容 从这里 委派处理程序 public class ResponseDataFilterHandler : DelegatingHandler { protected override System.Threading.Tasks.Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { return base.SendAsync(request, cancellationToken) .ContinueWith(task => { var response = task.Result; //Manipulate content here var content = response.Content as ObjectContent; if (content != null && content.Value != null) { } //Or replace the content […]

在ASP.NET Web API中序列化inheritance的类型

在Web API中序列化inheritance对象时遇到问题。 [DataContract] public class Item{ [DataMember] public int ID{get; set;} [DataMember] public string Name{get; set;} } [DataContract] public class SitecoreItem : Item{ [DataMember] public DbType SitecoreInstance{get; set;} } 我试图从WebAPI返回上面提到的SitecoreItem,但它尖叫序列化错误。 我究竟做错了什么?

返回HttpResponseMessage并配置Application Insights时,WebAPI响应永远不会完成

我有一个MVC5 / WebAPI2应用程序,自我创建Web项目以来已启用Application Insights。 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.rss”); str = await client.GetStringAsync(uri); } response.Content = new StringContent(str); response.Content.Headers.ContentLength = str.Length; return response; } } […]

控制器动作命名约定

正如命名约定所说,WebApi控制器动作名称应为Get(),Put()。 Post()等。但是告诉我,如果我有一个控制器作为CustomerController ,现在我想在其中有两个动作。 一个是GetCustomerById(int id) ,另一个是GetCustomerByAge(int age) 。 这两个动作都接受一个参数作为int。 所以,如果我想让url用户友好,比如“api / customer /”,我也想遵循命令约定,比如Get(int id)/ Get(int age) ,我该怎么做?

如何在UWP应用程序中编码/解码url字符串

我正在构建一个与Web-Api通信的UWP应用程序。 在某些点,我在URL中发送一个字符串到Web-Api,可以由用户操作。 因此,字符串可以包含可以对Web-Api做恶事的字符。 例如: 这是我的UserController [Route(“api/user/{uid}”)] public User GetUser(string uid) { return userRepository.GetByUid(uid); } 为了这个例子,我们假设用户可以在文本框中手动输入uid 。 现在,如果他投入 ../vipuser 他可以访问VipUserController。 因为../是一个hirachy。 我搜索了一下,发现这篇SO文章推荐使用System.Web.UrlEncodeUnicode和System.Web.UrlDecode 。 但是由于UWP Apps不包含System.Web命名空间,我想知道是否有替代方法,我可以将其用于UWP-App?