Questions tagged «asp.net-web-api2»

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

27
无法连接,因为目标计算机主动拒绝了吗?
有时在对WebService执行HttpWebRequest时收到以下错误。我也复制了下面的代码。 System.Net.WebException:无法连接到远程服务器---> System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它127.0.0.1:80 在System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot,SocketAddress socketAddress) 在System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP) 在System.Net.ServicePoint.ConnectSocketInternal处(布尔型connectFailure,Socket s4,Socket s6,Socket&套接字,IPAddress&地址,ConnectSocketState状态,IAsyncResult asyncResult,Int32超时,Exception&异常) ---内部异常堆栈跟踪的结尾--- 在System.Net.HttpWebRequest.GetRequestStream() ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy(); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.PreAuthenticate = true; request.Credentials = networkCredential(sla); request.Method = WebRequestMethods.Http.Post; request.ContentType = "application/x-www-form-urlencoded"; request.Timeout = v_Timeout * 1000; if (url.IndexOf("asmx") > 0 && parStartIndex > 0) { AppHelper.Logger.Append("#############" + …


4
如何在ASP.NET MVC 5和WEB API 2中实现oauth2服务器
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 去年关闭。 改善这个问题 首先,我将草绘我的项目: 对于我的实习,我需要向现有系统中添加功能。用户通过OAuth2授权后,第三方客户端必须能够从AX Web服务访问数据。我知道我需要制作一个“代理Web服务”,客户端可以在其中进行调用,并且可以调用AX服务,但是我对OAuth2部分还是不太确定。大多数教程和指南都是关于将ASP.NET的Identity用于Facebook或Google登录。我不需要,我需要使用现有的凭据,因此我需要创建自己的OAuth2服务。 我发现很难找到有关此的教程,指南或解释。我了解OAuth2以及需要执行的操作,但是我从来没有做过这样的事情,因此很难启动。我发现的最接近我需要的东西是这个github repo链接,但是解决方案未构建。 我想到的是建立一个ASP.NET MVC网站,客户(第三方)可以在该网站上注册自己并获取其客户ID。使用ASP.NET API,我想创建带有必需标记和参数的API,然后访问Dyn AX服务。 这是正确的还是我完全错了?关于构建自己的oauth2服务器/服务的任何帮助或链接都将很好。

2
在哪里可以找到NuGet软件包以升级到System.Web.Http v5.0.0.0?
刚刚将ASP.NET MVC4项目升级为使用Unity.WebApi版本5.0.0.0,并且根据以下错误需要System.Web.Http v 5.0.0.0: Assembly 'Unity.WebApi, Version=5.1.0.0, Culture=neutral, PublicKeyToken=43da31bc42a85347' uses 'System.Web.Http, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 我目前正在引用System.Web.Http v4.0,但是将以下NuGet软件包升级到了各自的最新版本: ANTLRv3 Microsoft ASP.NET通用提供程序 Microsoft.Web.Infrastructure Microsoft ASP.NET MVC Microsoft ASP.NET剃刀 Microsoft ASP.NET通用提供程序核心库 Microsoft ASP.NET通用提供程序 Microsoft ASP.NET Web API 2客户端 Microsoft ASP.NET Web API …

19
Swagger UI Web Api文档将枚举形式表示为字符串吗?
有没有一种方法可以将所有枚举显示为字符串形式,而不是int形式? 我希望能够提交POST操作并根据其字符串值放置枚举,而不必每次都查看该枚举。 我试过了,DescribeAllEnumsAsStrings但是服务器然后接收字符串而不是我们想要的枚举值。 有人解决了吗? 编辑: public class Letter { [Required] public string Content {get; set;} [Required] [EnumDataType(typeof(Priority))] public Priority Priority {get; set;} } public class LettersController : ApiController { [HttpPost] public IHttpActionResult SendLetter(Letter letter) { // Validation not passing when using DescribeEnumsAsStrings if (!ModelState.IsValid) return BadRequest("Not valid") .. } // …

9
点字符“。” 在MVC Web API 2中进行请求,例如api / people / STAFF.45287
我尝试使用的URL是以下格式的URL:http : //somedomain.com/api/people/staff.33311(就像LAST.FM的站点允许其RESTFul和WebPage url中包含各种符号一样,例如“ http://www.last.fm/artist/psy'aviah ”是LAST.FM的有效网址)。 在以下情况下有效:-http: //somedomain.com/api/people/-返回所有人-http: //somedomain.com/api/people/staff33311-也可以使用,但不是我所需要的我希望网址接受一个“点”之后的m,例如下面的示例-http: //somedomain.com/api/people/staff.33311-但这给了我一个 HTTP Error 404.0 - Not Found The resource you are looking for has been removed, had its name changed, or is temporarily unavailable. 我已经设置了以下内容: 控制器“ PeopleController” public IEnumerable<Person> GetAllPeople() { return _people; } public IHttpActionResult GetPerson(string id) { var person …

9
Web API 2:如何在对象及其子对象上返回带有camelCased属性名称的JSON
更新 感谢所有的答案。我正在一个新项目上,看来我终于明白了这一点:似乎实际上是以下代码导致的: public static HttpResponseMessage GetHttpSuccessResponse(object response, HttpStatusCode code = HttpStatusCode.OK) { return new HttpResponseMessage() { StatusCode = code, Content = response != null ? new JsonContent(response) : null }; } 别处... public JsonContent(object obj) { var encoded = JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore } ); _value …

5
CORS:凭据模式为“包含”
是的,我知道您在想什么-另一个CORS问题,但是这次我很困惑。 因此,开始时,实际的错误消息为: XMLHttpRequest无法加载http://localhost/Foo.API/token。当请求的凭据模式为'include'时,响应中'Access-Control-Allow-Origin'标头的值不得为通配符'* '。因此,不允许访问源' http:// localhost:5000 '。XMLHttpRequest发起的请求的凭据模式由withCredentials属性控制。 我不确定凭证模式的含义是'include'吗? 因此,当我在邮递员中执行请求时,没有遇到这样的错误: 但是,当我通过我的angularjs Web应用访问相同的请求时,我为这个错误感到困惑。这是我的angualrjs请求/响应。如您所见,响应为OK 200,但我仍然收到CORS错误: 提琴手的请求和响应: 下图演示了Web前端对API的请求和响应 因此,根据我在网上阅读的所有其他帖子,似乎我在做正确的事情,这就是为什么我无法理解该错误的原因。最后,这是我在angualrjs(登录工厂)中使用的代码: API中的CORS实现-参考目的: 方法1: public static class WebApiConfig { public static void Register(HttpConfiguration config) { EnableCrossSiteRequests(config); } private static void EnableCrossSiteRequests(HttpConfiguration config) { var cors = new EnableCorsAttribute("*", "*", "*") { SupportsCredentials = true }; config.EnableCors(cors); } …

11
Asp.Net WebApi2启用CORS无法与AspNet.WebApi.Cors 5.2.3一起使用
我试图按照http://enable-cors.org/server_aspnet.html 上的步骤操作,以使我的RESTful API(使用ASP.NET WebAPI2实现)可以处理跨源请求(启用CORS)。除非我修改web.config,否则它将无法正常工作。 我安装了WebApi Cors依赖项: install-package Microsoft.AspNet.WebApi.Cors -ProjectName MyProject.Web.Api 然后在我App_Start的班级中WebApiConfig,如下所示: public static class WebApiConfig { public static void Register(HttpConfiguration config) { var corsAttr = new EnableCorsAttribute("*", "*", "*"); config.EnableCors(corsAttr); var constraintsResolver = new DefaultInlineConstraintResolver(); constraintsResolver.ConstraintMap.Add("apiVersionConstraint", typeof(ApiVersionConstraint)); config.MapHttpAttributeRoutes(constraintsResolver); config.Services.Replace(typeof(IHttpControllerSelector), new NamespaceHttpControllerSelector(config)); //config.EnableSystemDiagnosticsTracing(); config.Services.Replace(typeof(ITraceWriter), new SimpleTraceWriter(WebContainerManager.Get<ILogManager>())); config.Services.Add(typeof(IExceptionLogger), new SimpleExceptionLogger(WebContainerManager.Get<ILogManager>())); config.Services.Replace(typeof(IExceptionHandler), new …

6
大幅度的错误:冲突的schemaIds:检测到类型A和B重复的schemaIds
使用Web API并使用swashbuckle生成详尽的文档,我在两个不同的命名空间中定义了两个具有相同名称的不同类。当我在浏览器中打开打开页面时,它说 冲突的schemaIds:检测到类型A和B重复的schemaIds。有关可能的解决方法,请参阅配置设置-“ UseFullTypeNameInSchemaIds” 完整讯息: 500:{“消息”:“发生错误。”,“ ExceptionMessage”:“冲突的schemaId:检测到类型A和B的重复的schemaId。请参见配置设置-\” UseFullTypeNameInSchemaIds \“以获取可能的解决方法”,“ ExceptionType Swashbuckle.Swagger.SchemaRegistry.CreateRegistry.CreateInlineSchema(类型)\ r \ n在Swashbuckle.Swagger。“”:“ System.InvalidOperationException”,“ StackTrace”:“在Swashbuckle.Swagger中。 SchemaRegistry.b__1f(JsonProperty prop)\ r \ n位于System.Linq.Enumerable.ToDictionary [TSource,TKey,TElement](IEnumerable 1 source, Func2 keySelector,Func2 elementSelector, IEqualityComparer1比较器)\ r \ n在Swashbuckle.Swagger.SchemaRegistry.CreateObjectSchema(JsonObjectContract jsonContract)\ r \ n在Swashbuckle.Swagger.SchemaRegistry.CreateDefinitionSchema(Type type)\ r \ n在Swashbuckle.Swagger.SchemaRegistry.GetOrRegister(Type type )\ r \ n在Swashbuckle.Swagger.SwaggerGenerator.CreateOperation(ApiDescription apiDesc,SchemaRegistry schemaRegistry)\ r \ n在Swashbuckle.Swagger.SwaggerGenerator.CreatePathItem(IEnumerable 1 …

1
使用OWIN身份从多个API客户端注册Web API 2外部登录
我想要以下架构(在此示例中,我组成了产品名称): 在一台服务器上运行的Web API 2应用程序 http://api.prettypictures.com 在另一台服务器上运行的MVC 5客户端应用程序 http://www.webpics.com 我希望www.webpics.com客户端应用程序使用Pretty Pictures API来: 使用用户名和密码注册新帐户 在Facebook / Google / Twitter / Microsoft注册新帐户 登录 检索图片 以上所有工作,除了在Facebook,Google等处注册外部帐户外。 我无法计算出正确的流程来从API的单独客户端用户创建外部帐户。 我研究了身份验证流程中可用的大多数文档,例如: 我已经阅读了关于OWIN中新Identity模式的几乎所有内容。 我已经检查了Visual Studio 2013中的SPA模板。该模板演示了如何执行我所需的大部分操作,但仅当客户端和API位于同一主机上时才执行。如果我希望多个客户端访问我的API并能够让用户通过Google等进行注册,则无法正常工作,据我所知,OWIN身份验证流程中断了。 到目前为止的流程如下: 用户浏览到www.webpics.com/Login www.webpics.com调用api.prettypictures.com/Account/ExternalLogins(用RETURNURL一套回去在回调www.webpics.com),并显示最终链接到用户 用户点击“ Google” 浏览器使用提供者的名称等重定向到api.prettypictures.com/Account/ExternalLogin。 API的ExternalLogin操作实例化了对google.com的挑战 浏览器被重定向到google.com 用户输入其用户名和密码(如果尚未登录google.com) google.com现在提供安全检查:“ api.prettypictures.com”希望访问您的电子邮件地址,姓名,妻子,子女等。可以吗? 用户单击“是”,并使用Google设置的cookie带回到api.prettypictures.com/Account/ExternalLogin。 这就是我卡住的地方。接下来应该发生的是,应该以某种方式通知客户端应用程序用户已成功通过google.com进行身份验证,并获得一次性使用访问代码,以稍后交换访问令牌。客户端应用应有机会(如有必要)提示用户输入用户名,以与其google.com登录名相关联。 我不知道该怎么做。 实际上,在这一点上,浏览器最终在Google回调后位于api.prettypictures.com/Account/ExternalLogin端点。该API已针对Google登录,但客户端不知道如何处理。我应该将该Cookie传送回www.webpics.com吗? 在SPA应用程序中,这是通过AJAX完成的,并且google.com将返回令牌作为URL片段,并且由于它们都位于一个域中,因此效果很好。但是,这与拥有多个客户端可以完全使用的“ API”的许多观点不符。 救命!

4
找不到OWIN HttpListener
当我尝试开始时: WebApp.Start<SrvcHst>(new StartOptions { Port = 9956, ServerFactory = "Microsoft.Owin.Host.HttpListener" }); 我得到以下异常。可能是根本原因? System.MissingMemberException was caught HResult=-2146233070 Message=The server factory could not be located for the given input: Microsoft.Owin.Host.HttpListener Source=Microsoft.Owin.Hosting StackTrace: at Microsoft.Owin.Hosting.Engine.HostingEngine.ResolveServerFactory(StartContext context) at Microsoft.Owin.Hosting.Engine.HostingEngine.Start(StartContext context) at Microsoft.Owin.Hosting.Starter.DirectHostingStarter.Start(StartOptions options) at Microsoft.Owin.Hosting.Starter.HostingStarter.Start(StartOptions options) at Microsoft.Owin.Hosting.WebApp.StartImplementation(IServiceProvider services, StartOptions options) at Microsoft.Owin.Hosting.WebApp.Start(StartOptions options) …

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.