Tag: asp.net web api

无法将类型为“Newtonsoft.Json.Linq.JObject”的对象强制转换为“System.Runtime.Serialization.ISafeSerializationData”

我试图反序列化一个web api调用得到以下exception – 消息是模糊的,所以我无法理解发生了什么 – 这个演员在其他情况下工作不确定这里有什么问题: 例外: InnerException: System.Reflection.TargetInvocationException _HResult=-2146232828 _message=Exception has been thrown by the target of an invocation. HResult=-2146232828 IsTransient=false Message=Exception has been thrown by the target of an invocation. Source=mscorlib StackTrace: at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, […]

使用字符串参数调用web api

我有一个web api,我有2个方法,一个没有参数,两个有不同类型的参数(字符串和整数)。 调用字符串方法时它不起作用…我在这里缺少什么? public class MyControllerController : ApiController { public IHttpActionResult GetInt(int id) { return Ok(1); } public IHttpActionResult GetString(string test) { return Ok(“it worked”); } } WebApiConfig.cs: public static void Register(HttpConfiguration config) { // Web API configuration and services // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: “DefaultApi”, routeTemplate: “api/{controller}/{id}”, defaults: new { id = […]

在Web.API控制器中自动反序列化为类似字符串的类

我有一个Web.API端点,它将这样的对象作为参数: public class Person { public string FirstName { get; set; } public string LastName { get; set; } public int Age { get; set; } public UserName UserName { get; set; } } 例如: [Route(“api/person”)] [AcceptVerbs(“POST”)] public void UpdatePerson(Person person) { // etc. } (这只是一个例子 – 我们实际上并没有通过我们的Web.API端点接受用户名) 我们的UserName类是一个将string隐式运算符定义的对象,因此我们将它视为整个应用程序中string的处理方式。 遗憾的是,Web.API不会自动知道如何将相应的JavaScript Person对象反序列化为C# Person对象 – 反序列化的C# Person对象始终为null。 […]

升级到Web API 2后,HttpApplication.Application_Start未触发

我将应用程序升级到Web Api 2,并且Application_Start不会触发在IIS Express上运行的升级后升级。 我的确遵循官方升级路径http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to- aspnet-mvc-5-and-web-api-2并检查了我的设置。 该应用程序使用StructureMap MVC 4来注入依赖项。 因此,WebActivator的PreApplicationStartMethod被触发,依赖项解析器被正确设置。 之后,无法追踪其他执行。 我启用了编辑并继续,但是在Application_Start的开头没有命中断点。 以下是我尝试过的所有内容: 禁用PreApplicationStartMethod并运行应用程序b。 更改Global.asax的编译设置和c后面的代码。 创建另一个具有类似结构的WebApi2项目,并设置减去实际代码,并且工作正常 我已经清理并运行了应用程序; 还清理了Temp ASP.NET文件夹 感谢帮助解决这个问题。

在MVC 4中使用自定义授权

我目前正在使用MVC 4 Web API项目类型开发Web API。 我目前处于需要为API添加一些安全性的阶段。 我知道Authorize属性,但客户端更喜欢不同的方法。 为此,我试图覆盖我自己的类中的Authorize属性,作为一个基本的开始,我只是让AuthorizeCore总是返回false,这应该意味着没有经过身份validation。 如果我然后将其添加到控制器中的Action,则操作始终完成,并且我始终检索数据。 我认为原因可能是由于自定义属性未在web.config文件中注册,但是,我不确定如何在不使用表单身份validation时进行此操作。 我用来测试的代码是一个全新的MVC 4 Web API项目,其自定义属性如下所示。 public class Auth : AuthorizeAttribute { protected override bool AuthorizeCore(HttpContextBase httpContext) { return false; } protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) { filterContext.Result = new RedirectResult(“http://www.google.com”); } } 然后我将属性添加到默认ValuesController的Get方法中 [Auth] public IEnumerable Get() 但是,当我导航到domain / api / Values时,我总是会看到数据,而不是预期的重定向谷歌。 任何帮助表示赞赏。 编辑:看了一下之后我在这里找到了这个: http : […]

WebAPI 2.2 OData v4 适用于哪里?

从2015年1月起应用EnableQueryAttribute在哪里正确/不正确? 该文件链接如下: http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/create-an-odata-v4-endpoint 说: [EnableQuery]属性允许客户端使用$ filter,$ sort和$ page等查询选项修改查询。 有关更多信息,请参阅支持OData查询选项。 以下链接文件: http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options 说: EnableQuerySupport方法为任何返回IQueryable类型的控制器操作全局启用查询选项。 但是这篇关于WebApi 2.2上OData 4的文档已经将它放在了返回IHttpActionResult的行为上: http://blogs.msdn.com/b/webdev/archive/2014/03/13/getting-started-with-asp-net-web-api-2-2-for-odata-v4-0.aspx [ODataRoutePrefix(“Teams”)] public class TeamsEntitySetController : ODataController { private readonly LeageContext _leage = new LeageContext(); [EnableQuery] [ODataRoute] public IHttpActionResult GetFeed() { return Ok(_leage.Teams); } [ODataRoute(“({id})”)] [EnableQuery] public IHttpActionResult GetEntity(int id) { return Ok(SingleResult.Create(_leage.Teams.Where(t => t.Id == id))); } } […]

GET / DELETE背后的原因不能在webapi中有正文

为什么像GET和DELETE这样的HttpMethod不能包含body ? public Task GetAsync(Uri requestUri); public Task DeleteAsync(string requestUri); 同样在Fiddler,如果我提供一个身体,背景会变成红色。 但它仍将在身上执行。 因此,作为替代方案,我使用SendAsync()因为它接受HttpRequestMessage ,它可以包含HttpMethod以及内容 。 // other codes Category category = new Category(){ Description = “something” }; string categoryContent = JsonConvert.SerializeObject(category); string type = “application/json”; HttpRequestMessage message = new HttpRequestMessage(HttpMethod.Delete, “-page-“) HttpContent content = new StringContent(categoryContent, Encoding.UTF8, type); HttpClient client = new HttpClient(); message.Content = […]

Swagger 2.0不支持:带路径的多个操作

我在WebApi 2应用程序中集成了swagger。 应用程序有单个控制器时,它工作正常。 当我在应用程序中添加第二个控制器时。 我收到了以下错误: 发生错误。“,”ExceptionMessage“:”Swagger 2.0不支持:路径’api / Credential’和方法’GET’的多个操作。 请参阅配置设置 – \“ResolveConflictingActions \”以获取潜在的解决方法“,”ExceptionType“:”System.NotSupportedException“,”StackTrace“:”在Swashbuckle的Swashbuckle.Swagger.SwaggerGeneratorOptions.DefaultConflictingActionsResolver(IEnumerable 1 apiDescriptions)\r\n at Swashbuckle.Swagger.SwaggerGenerator.CreatePathItem(IEnumerable 1 apiDescriptions,SchemaRegistry schemaRegistry)\ r \ n在Swashbuckle.Swagger.SwaggerGenerator。 c__DisplayClass7.b__4(IGrouping 2 group)\r\n at System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable 1 source,Func 2 keySelector, Func 2 elementSelector,IEqualityComparer 1 comparer)\r\n at Swashbuckle.Swagger.SwaggerGenerator.GetSwagger(String rootUrl, String apiVersion)\r\n at Swashbuckle.Application.SwaggerDocsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\r\n at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\r\n at System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(HttpRequestMessage request, […]

无法添加对’System.Net.Http’的引用。 请确保它在全局程序集缓存中

我正在尝试将Microsoft.AspNet.WebApi Nuget Package添加到C#类库项目中。 这是项目源代码,以备您需要时使用。 当我在Visual Studio 2013中的Nuget包管理器控制台中执行以下命令时(其中包含最新的.NET 4.5) PM> install-package Microsoft.AspNet.WebApi ErrandBoy.Web.Common 我收到以下错误。 PM> install-package Microsoft.AspNet.WebApi ErrandBoy.Web.Common Attempting to resolve dependency ‘Microsoft.AspNet.WebApi.WebHost (≥ 5.2.2 && < 5.3.0)'. Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Core (≥ 5.2.2 && < 5.3.0)'. Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Client (≥ 5.2.2)'. Attempting to resolve dependency 'Newtonsoft.Json (≥ 6.0.4)'. 'Microsoft.AspNet.WebApi 5.2.2' already installed. […]

找不到Angular2 POST Web api 404

我正在构建一个Angular2服务来记录存储在ILog对象中的某些事件,并将它们发送到API以存储在数据库中。 我的日志服务非常简单: import { Injectable } from ‘@angular/core’; import { Http } from ‘@angular/http’; import { EnvironmentModule } from “../environment”; import { ILog } from “./log”; @Injectable() export class LogService { constructor(private _http: Http, private environment: EnvironmentModule) { } postLog(log: ILog): void { this.json = this.convertToJSON(log); this._http.post(this.environment.getWebApiUri() + ‘api/Log/PostLog/’, log, {}) .subscribe( () => console.log(‘Success’) […]