Tag: asp.net web api

Castle Windsor ApiController工厂实现ASP.NET Web API

我知道可以使用DependancyResolver并将Castle Windsor注册到MVC但是由于https://stackoverflow.com/a/4889222/139392中描述的问题,我们坚持使用我们的MVC项目上的WindsorControllerFactory实现方法。 然而,看起来ApiControllers正在使用其他类型的工厂,因为Castle Windsor无法注入依赖项。 有没有人想出如何在不使用DependencyResolver的情况下将Castle Windsor与ASP.NET Web API和MVC一起使用?

在WebAPI C#中请求反序列化期间捕获exception#

我正在使用WebAPI v2.2,我正在使用[FromBody]属性将WebAPI反序列化到对象上。 反序列化的目标类在内部方法上有[OnDeserialized]属性,如下所示: [OnDeserialized] internal void OnDeserialisedMethod(StreamingContext context) { // my method code } 我知道这个方法中的代码存在问题,我已经逐步完成并找到了它。 对我来说问题是我完全没有例外。 发生的事情是这个方法被跳出来,exception似乎被忽略了。 我的控制器操作被调用,我的目标对象未正确填充,因为此序列化方法未正确执行。 我的问题是; 如何捕获WebAPI中反序列化期间发生的exception?

如何向IIS中的Web api应用程序授予写入权限?

我只是在IIS服务器上有一个web api应用程序,只需在C:\ FileStorage \ test.txt上写入文本文件,但是当我调用这个webservice时,我得到内部500错误,在扩展错误后,我得到以下错误,如何在IIS服务器上授予对此Web服务的写访问权限? “ExceptionMessage”: “Access to the path ‘C:\\FileStorage\\test.txt’ is denied.”, “ExceptionType”: “System.UnauthorizedAccessException”, “StackTrace”: ” at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)\r\n at

从SQL Server 2012或SQL CLR C#发送HTTP POST请求

是否有一种普遍接受的标准方式从SQL Server 2012发送HTTP请求? 我想要做的是使用远程服务器处理搜索查询,然后将结果插回到SQL Server 2012数据库。 远程服务器提供了一个web api,它接受带有JSON内容的POST请求。 我有一个有效的解决方案,但需要将多个程序集加载到SQL Server中。 其中一些程序集不完全受支持(例如System.Net.Http.dll),发出如下警告: 警告:Microsoft .NET Framework程序集“system.net.http,version = 4.0.0.0,culture = neutral,publickeytoken = b03f5f7f11d50a3a,processorarchitecture = msil。” 您正在注册未在SQL Server托管环境中进行全面测试,并且不受支持。 将来,如果升级或维护此程序集或.NET Framework,则CLR集成例程可能会停止工作。 有关更多详细信息,请参阅SQL Server联机丛书。 我想知道是否有更好/更安全的方式不需要加载所有这些组件? 我的存储过程的CLR代码: [Microsoft.SqlServer.Server.SqlProcedure] public static void SendSearchRequestProcedure (string query, string table) { RunAsync(query,table).Wait(); } static async Task RunAsync(string query, string table) { using (var client = new […]

WebAPI自定义模型绑定复杂的抽象对象

这是困难的一个。 我有一个从JSON绑定模型的问题。 我试图解决多态一致的记录提供的记录,它将解析为(我希望以后能够添加许多记录类型)。 我试图在调用端点时使用以下示例来解析我的模型,但是此示例仅适用于MVC而不适用于Web API应用程序。 我试图使用IModelBinder和BindModel(HttpActionContext actionContext,ModelBindingContext bindingContext)编写它。 但是,我在System.Web.Http命名空间中找不到ModelMetadataProviders的等价物。 感谢任何人都能给予的帮助。 我有一个Web API 2应用程序,它具有以下对象结构。 public abstract class ResourceRecord { public abstract string Type { get; } } public class ARecord : ResourceRecord { public override string Type { get { return “A”; } } public string AVal { get; set; } } public class BRecord : […]

如何修改Web API应用程序的默认允许响应大小设置?

我有一个返回事件列表的Web API方法: public HttpResponseMessage GetEvents() { … } 我的服务使用DataContractSerializer(对于xml)和DataContractJsonSerializer(对于JSON)支持Xml和JSON响应。 响应大小可能像30MB。 IIS中托管的ASP.NET Web API中默认允许的响应大小是多少? 如何修改默认设置? 返回这些大数据的最佳做法是什么(虽然它不是那么大)? 我应该压缩回复吗? 此外,我们可能每秒收到一个请求。 谢谢

基于查询字符串参数名称的路由

我正在尝试在我的MVC4 WebAPI项目中配置路由。 我希望能够根据他们的名字或类型搜索产品,如下所示: /api/products?name=WidgetX – 返回名为WidgetX /api/products?type=gadget所有产品/api/products?type=gadget – 返回gadget类型的所有产品 路由配置如下: config.Routes.MapHttpRoute( name: “Get by name”, routeTemplate: “api/products/{name}”, defaults: new { controller = “ProductSearchApi”, action = “GetProductsByName”, name = string.Empty } ); config.Routes.MapHttpRoute( name: “Get by type”, routeTemplate: “api/products/{type}”, defaults: new { controller = “ProductSearchApi”, action = “GetProductsByType”, type = string.Empty } ); 问题是查询字符串参数的名称似乎被忽略,因此第一个路径始终是使用的路径,无论查询字符串参数的名称如何。 如何修改我的路线以使其正确?

将对象的数组传递给webapi

我有一个.net mvc 4 webapi项目,我试图将一个对象数组传递给我的控制器上的方法。 我在SO上找到了一些关于需要设置我的对象属性的例子:param1 = whatever&param2 = bling&param3 = blah。 但我不知道如何使用它来传递集合。 这是我的方法签名。 注意我用[FromUri]属性修饰了参数。 public List GetPhoneNumbersByNumbers([FromUri] PhoneRequest[] id) { List prs = new List(); foreach (PhoneRequest pr in id) { prs.Add(PhoneNumberBL.GetSinglePhoneResult(pr.PhoneNumber, pr.RfiDate, pr.FinDate, pr.State)); } return prs; } 这是我简单的PhoneRequest对象: public class PhoneRequest { public string PhoneNumber { get; set; } public string RfiDate { […]

OData $ expand,DTO和Entity Framework

我有一个基本的WebApi服务设置,数据库首先设置了EF DataModel。 我正在运行WebApi,EF6和WebApi OData包的每晚构建。 (WebApi:5.1.0-alpha1,EF:6.1.0-alpha1,WebApi OData:5.1.0-alpha1) 该数据库有两个表:产品和供应商。 产品可以有一个供应商。 供应商可以拥有多种产品。 我还创建了两个DTO类: public class Supplier { [Key] public int Id { get; set; } public string Name { get; set; } public virtual IQueryable Products { get; set; } } public class Product { [Key] public int Id { get; set; } public string Name { get; […]

如何更改默认的ASP.NET MVC Web API媒体格式化程序?

我有一个Web API项目,它返回一些产品数据。 它根据请求的Accept标头(JSON / XML)正确协商返回类型。 问题是,如果没有指定Accept头,则返回JSON,但我希望它默认返回XML。 如何更改Global.asax中的内容协商默认值?