Tag: asp.net web api

.NET客户端连接到ssl Web API

我有一个ASP.NET Web API,我想与ssl一起使用。 目前,服务器正在使用自签名证书,此时允许使用http和https。 我有一个非常基本的测试客户端,它适用于http,但不适用于https。 我想知道如何修改下面的客户端代码,以便它可以与https一起使用。 目前IE,Firefox和Chrome都可以使用http和https(带有证书警告)连接到Web API,因此这让我相信我不应该只修改服务器上的任何内容,只需在客户端代码中。 这是客户端代码: static void Main(string[] args) { try { if (args.Length != 1) { Console.WriteLine(“Please provide a url, and only a url.”); return; } var url = new Uri(args[0]); var urlAuthority = url.GetLeftPart(UriPartial.Authority); var urlPathQuery = args[0].Substring(urlAuthority.Length); HttpClient client = new HttpClient(); client.BaseAddress = new Uri(urlAuthority); HttpResponseMessage response […]

如何在WebAPI后端C#上接收JSON数据?

如何在C#中的WebAPI后端接收JSON数据? 我从我的JavaScript前端发送了以下JSON。 { “User_Id”: 1, “TotalPrice”: 35, “DeliveryAddress”: “At my house”, “CartItems”: [ { “Id”: 1009, “Name”: “Superman juni 2014”, “Quantity”: 1, “Price”: 35 } ] } 我有这个课程: public class PurchaseOrder { public List CartItems { get; set; } public string DeliveryAddress { get; set; } public int TotalPrice { get; set; } public int […]

OData错误:URI中指定的查询无效。 该属性不能在查询选项中使用

我正试图让OData端点启动并正常工作,我遇到了这个错误,即使谷歌也没什么可说的。 我已经创建了一个Entity Framework EDMX上下文(数据库优先),让设计者从中生成2个模型。 一切都运行正常,除了$filter查询失败。 我可以做得很好: http://localhost:27164/Projects(6587660) 它检索主ID为6587660的项目。 但是任何$filter请求都是这样的: http://localhost:27164/Projects?$filter=ProjectID eq 6587660 将失败并出现以下错误: URI中指定的查询无效。 属性“ProjectID”不能在$ filter查询选项中使用。 我也尝试过查询其他属性,字符串属性。 同样的错误。 我已经检查过EF生成的模型在属性上没有任何属性,但它们没有。 这是我在WebApiConfig.cs模块中的Register方法: using System.Web.OData.Builder; using System.Web.OData.Extensions; public static void Register(HttpConfiguration config) { // Web API configuration and services // Configure Web API to use only bearer token authentication. config.SuppressDefaultHostAuthentication(); config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); ODataModelBuilder builder = new ODataConventionModelBuilder(); builder.EntitySet(“Projects”); […]

如何缓存.NET Web API请求(并使用w / AngularJS $ http)

我有一个用ASP.NET编写的Web API,我通过AngularJS $http消费。 我已经在我的AngularJS工厂中启用了缓存,如下所示,但每个请求仍然返回200的响应,从不返回200 (from cache)或304 (并且每个请求我的意思是在同一页面上多次发出相同的web api请求,重新访问页面我已经访问过包含Web API请求,刷新所述页面等)。 angular.module(‘mapModule’) .factory(‘GoogleMapService’, [‘$http’, function ($http) { var googleMapService = { getTags: function () { // $http returns a promise, which has a ‘then’ function, which also returns a promise return $http({ cache: true, dataType: ‘json’, url: ‘/api/map/GetTags’, method: ‘GET’, data: ” }) .then(function (response) { return […]

从OWIN Middleware更改响应对象

我的OWIN中间件就是这样的。 (Framework是ASP.NET Web API)。 public class MyMiddleware : OwinMiddleware { public MyMiddleware(OwinMiddleware next) : base(next) { } public override async Task Invoke(OwinRequest request, OwinResponse response) { var header = request.GetHeader(“X-Whatever-Header”); await Next.Invoke(request, response); response.SetHeader(“X-MyResponse-Header”, “Some Value”); response.StatusCode = 403; } } 问题: 是从OwinMiddleware派生的推荐做法吗? 我看到在Katana源代码中,一些中间件类派生自OwinMiddleware而OwinMiddleware一些则不是。 我可以看到请求标头没问题。 Next.Invoke在我的中间件之后设置响应头或状态代码对返回给客户端的响应没有影响。 但是,如果我在Next.Invoke调用之前设置响应标头或状态,则带有标头的响应和我设置的状态将返回给客户端。 设置这些的正确方法是什么?

为什么在web api中返回一个具有一对多关系的实体会导致错误?

伙计我和同一个class级有一对多的关系叫做用户, 我在web apis get方法中返回一个用户实例,只要我没有,它就可以正常工作 User ID | Name 0 | A 1 | B Friends Table ( This table is used to build the one to many relationship ) User_ID | Friend_ID 1 | 0 0 | 1 这是我的GetMethod [HttpGet] public Models.User Authenticate() { try { return db.Users.SingleOrDefault(x => x.ID == 0 ) ; } […]

如何在Visual Studio 2012中配置/设置Log4Net与ASP.NET(包含MVC)C#

我想将软件进程日志记录到文件中。 我试图将Log4Net与ASP.NET MVC一起使用,而不是制作我自己的日志系统,但我在Visual Studio 2015中设置它时遇到了问题,如: 如何设置web.config / Global.asax页面? 如何在VS 2012中安装组件〜? 如何在我的*.cs文件中使用它? 在Visual Studio 2015中使用ASP.NET MVC C#正确配置Log4Net的步骤是什么? 我还写了一个问答来为ASP.NET WebForms设置它,参见如何在ASP.NET Web窗体中使用Nuget和Visual Studio平台的Log4net(简单方法) 。

如何在ASP.NET MVC 4 Web API中测试自定义DelegatingHandler?

我已经看到这个问题出现在一些地方,没有看到任何好的答案。 因为我必须自己做几次,我以为我会发布我的解决方案。 如果你有更好的,请发布。 NB这是使用ASP.NET MVC 4 Beta 2版本的Web API – 未来的版本可能会改变! 更新:这仍然适用于ASP.NET MVC 4 RC

如何在ASP.NET Core Web Api中完成版本控制

在之前的asp.net web api ,我实现了DefaultHttpControllerSelector来指定我希望请求如何定位我的控制器。 我经常使用不同名称的不同控制器,但用于相同的过程。 唯一的区别是一个版本比另一个版本更高版本。 例如,我可以有一个名为BookingV1Controller的控制器,它将用于处理服务的第一个版本。 我也有BookingV2Controller ,它设计用于处理服务的第二版。 然后,客户端应用程序将使用此URL http://myservice.com/api/v2/booking/someaction?id=12向服务发出请求。 为了处理请求,我将提供DefaultHttpControllerSelector的自定义实现,以根据请求的版本选择所需的控制器的相应版本。 但是,我似乎没有办法在ASP.NET Core执行此操作。 我到处搜索都无济于事。 没有可以帮助的文档。 如果有人能帮助我,我将不胜感激。 谢谢。 更新我还想知道如果在自定义标头中指定版本该怎么办。 例如X-Version:v1 更新2 要求是不应在URL中公开服务的版本。 如果没有版本,则服务返回有关如何添加版本的说明。 如果请求的版本中没有请求的控制器,系统将搜索较低版本。 如果它在任何较低版本中找到它,它就会使用它。 这样做的原因是为了防止在所有版本上重复控制器。 但是使用ASP.NET Core,这可能是不可能的。

如何通过WebApi上传图像

如何通过ASP.NET Web API上传图像文件? 我在文件模式下有一个输入标签,它发布到API,我如何将其保存到服务器文件夹 我尝试了这段代码但是没有用: private void UploadWholeFile(HttpRequestBase request) { for (int i = 0; i < request.Files.Count; i++) { var file = request.Files[i]; var ext = new FileInfo(file.FileName).Extension; var fullPath = Path.Combine(StorageRoot, Path.GetFileName(Guid.NewGuid() + ext)); file.SaveAs(fullPath); } }