Questions tagged «asp.net-web-api»

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

10
使用Web API返回匿名类型
使用MVC时,返回即席Json很容易。 return Json(new { Message = "Hello"}); 我正在使用新的Web API寻找此功能。 public HttpResponseMessage<object> Test() { return new HttpResponseMessage<object>(new { Message = "Hello" }, HttpStatusCode.OK); } 由于DataContractJsonSerializer无法处理匿名类型,因此引发了异常。 我有这个替换此JsonNetFormatter基于Json.Net。如果我使用这行得通 public object Test() { return new { Message = "Hello" }; } 但如果我不返回HttpResponseMessage,我看不到使用Web API的意义,那么最好还是坚持使用香草MVC。如果我尝试使用: public HttpResponseMessage<object> Test() { return new HttpResponseMessage<object>(new { Message = "Hello" …


5
Web API和ValidateAntiForgeryToken
我们有一些现有的MVC Web服务,这些Web服务在网页中称为AJAX样式。这些服务利用ValidateAntiForgeryToken属性来帮助防止请求伪造。 我们正在寻求将这些服务迁移到Web API,但似乎没有等效的防伪功能。 我想念什么吗?是否存在使用Web API解决请求伪造的其他方法?

8
MVC5,Web API 2和Ninject
我使用Web API 2创建了一个新的MVC5项目,然后从NuGet添加了Ninject.MVC3包。 构造函数注入对于MVC5控制器运行良好,但是尝试将其与Web API控制器一起使用时出现错误。 尝试创建“ UserProfileController”类型的控制器时发生错误。确保控制器具有无参数的公共构造函数。 适用于MVC5控制器的构造函数: public class HomeController : Controller { private IMailService _mail; private IRepository _repo; public HomeController(IMailService mail, IRepository repo) { _mail = mail; _repo = repo; } } 非工作Web API控制器的构造函数: public class UserProfileController : ApiController { private IRepository _repo; public UserProfileController(IRepository repo) { _repo …

6
为什么我的ASP.NET Web API ActionFilterAttribute OnActionExecuting无法启动?
我正在尝试实施此处看到的内容:http : //www.piotrwalat.net/nhibernate-session-management-in-asp-net-web-api/但我的出现了问题NhSessionManagementAttribute。 我已在自己的节点上设置了断点,OnActionExecuting(HttpActionContext actionContext)以查看是否曾经调用过该函数-事实并非如此。 我仔细检查了global.asax.cs文件并发现我实际上是在向注册ActionFilter: GlobalConfiguration.Configuration.Filters.Add(new NhSessionManagementAttribute()); 我还用无效的属性装饰了控制器类本身及其动作: public class ClientsController : ApiController { static readonly ClientRepository repository = new ClientRepository(); [NhSessionManagement] public IEnumerable<Client> GetAllClients() { return repository.GetAll(); } [NhSessionManagement] public Client GetClient(int id) { Client client = repository.Get(id); if (client == null) { throw new HttpResponseException( new HttpResponseMessage(HttpStatusCode.NotFound) …

8
尝试通过邮递员调用OWIN OAuth安全的Web Api来获取JWT时,出现“错误”:“ unsupported_grant_type”
我已关注本文以实现OAuth授权服务器。但是,当我使用邮递员获取令牌时,响应中出现错误: “错误”:“ unsupported_grant_type” 我读到某处需要使用来发布Postman中的数据Content-type:application/x-www-form-urlencoded。我已经在Postman中准备了所需的设置: 但是我的标题是这样的: 这是我的代码 public class CustomOAuthProvider : OAuthAuthorizationServerProvider { public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) { context.Validated(); return Task.FromResult<object>(null); } public override Task MatchEndpoint(OAuthMatchEndpointContext context) { if (context.OwinContext.Request.Method == "OPTIONS" && context.IsTokenEndpoint) { context.OwinContext.Response.Headers.Add("Access-Control-Allow-Methods", new[] { "POST" }); context.OwinContext.Response.Headers.Add("Access-Control-Allow-Headers", new[] { "accept", "authorization", "content-type" }); context.OwinContext.Response.StatusCode = 200; …


1
简单发布到Web Api
我正在尝试获取发布请求以使用网络api。以下是我的api控制器。 public class WebsController : ApiController { [HttpPost] public void PostOne(string id) { } [HttpPost] public void PostTwo(Temp id) { } } 我已更改了webapi路由以考虑该操作。Temp模型看起来像这样。 public class Temp { public string Id { get; set; } } 我的观点看起来像这样 @using (Ajax.BeginForm(new AjaxOptions { Url = "/api/webs/postone", HttpMethod = "post" })) { <input name="id" …

6
将Fiddler与基本身份验证结合使用以访问RESTful WebAPI
我有一个可以正常工作的WebAPI。我已经在本地测试并部署到我的服务器,并在IIS中将此服务配置为使用基本身份验证。我能够浏览到我的服务,并且收到了我期望的身份验证挑战,并且一切正常!现在,我想使用Fiddler进行测试,并且我已经构建了到特定URL的POST,并且出现401(未经授权)错误。因此,我决定在请求标题中添加base64字符串,现在出现500错误。 我想知道的是,我的请求标题看起来正确吗?我显然要混淆我的Host和base64字符串,该字符串包含用于身份验证挑战的格式username:password。 User-Agent: Fiddler Host: xxx.xxx.xxx.xxx:xxxx Content-Length: 185 Content-Type: text/json Authorization: Basic jskadjfhlksadjhdflkjhiu9813ryiu34

4
对抗Asp.Net WebApi的Angular,在服务器上实现CSRF
我正在Angular.js中实现一个网站,该网站访问了ASP.NET WebAPI后端。 Angular.js具有一些内置功能,可帮助进行反csrf保护。在每个http请求上,它将查找名为“ XSRF-TOKEN”的cookie,并将其作为名为“ X-XSRF-TOKEN”的标头提交。 这取决于Web服务器能够在验证用户身份之后设置XSRF-TOKEN cookie,然后检查X-XSRF-TOKEN标头中是否有传入请求。 该角文档状态: 要利用此优势,您的服务器需要在第一个HTTP GET请求上的名为XSRF-TOKEN的JavaScript可读会话cookie中设置令牌。在随后的非GET请求上,服务器可以验证cookie是否与X-XSRF-TOKEN HTTP标头匹配,因此,请确保只有在您的域上运行的JavaScript才能读取令牌。令牌对于每个用户必须是唯一的,并且必须可由服务器验证(以防止JavaScript编写自己的令牌)。我们建议该令牌是您的站点身份验证Cookie的摘要,并添加盐,以增强安全性。 我找不到针对ASP.NET WebAPI的任何良好示例,因此在各种来源的帮助下,我都做了自己的工作。我的问题是-有人能看到代码有什么问题吗? 首先,我定义了一个简单的帮助程序类: public class CsrfTokenHelper { const string ConstantSalt = "<ARandomString>"; public string GenerateCsrfTokenFromAuthToken(string authToken) { return GenerateCookieFriendlyHash(authToken); } public bool DoesCsrfTokenMatchAuthToken(string csrfToken, string authToken) { return csrfToken == GenerateCookieFriendlyHash(authToken); } private static string GenerateCookieFriendlyHash(string authToken) { using …

3
无法从apicontroller中的OwinContext获取UserManager
我正在跟踪一个Microsoft示例,以使用Identity 2.0.0实现电子邮件验证。 我被困在这部分 public ApplicationUserManager UserManager { get { return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(); } private set { _userManager = value; } } 这可以在ApiController中工作,controller但HttpContext不包含任何GetOwinContext方法。 所以我尝试了,HttpContext.Current.GetOwinContext()但是该方法GetUserManager不存在。 我找不到UserManager在Startup.Auth.cs中构建I的方法 // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864 public void ConfigureAuth(IAppBuilder app) { //Configure the db context, user manager and role manager to …

5
在Webapi中使用ViewModel是否有意义?
我开始学习webapi并发现自己做的事情在MVC项目中是有意义的,但可能没有意义。 通常在MVC项目中,我制作ViewModels并将其用作参数或将其与视图一起传回。 由于webapi中没有视图,因此我认为将ViewModel作为参数没有任何意义。 我想知道是否应该仅将我的EF域作为参数(代码优先)并将数据注释放在这些参数之上。我通常将注解放在视图模型属性上,因为我喜欢在域上放。 但是,阻止我执行此操作的原因是我不是100%清楚我的MVC网站如何工作。 MVC站点只是回吐简单视图,然后使用Jquery调用您的webapi还是仅调用MVC操作方法而直接调用与Webapi相同的方法? 如果是第二种方法,那么我宁愿再将数据注释放在我的视图模型上,但是随后我将相同的注释放在EF域和VM上,这似乎是多余的。

2
Web API中基于令牌的身份验证,没有任何用户界面
我正在ASP.Net Web API中开发REST API。我的API仅可通过非基于浏览器的客户端访问。我需要为我的API实现安全性,因此我决定采用基于令牌的身份验证。我对基于令牌的身份验证有一定的了解,并且阅读了一些教程,但是它们都有一些用于登录的用户界面。我不需要任何UI进行登录,因为登录详细信息将由客户端通过HTTP POST传递,而HTTP POST将从我们的数据库中获得授权。如何在我的API中实现基于令牌的身份验证?请注意-我的API将以高频率访问,因此我也必须注意性能。请让我知道是否可以更好地解释它。



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.