Tag: asp.net web api

无法加载文件或程序集“Microsoft.AI.Web”或其依赖项之一。 该系统找不到指定的文件

成功发布我的Web Api到Azure后,当我尝试点击API时,我得到以下错误。 这是api的链接 WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. 注意:程序集绑定失败日志记录会导致一些性能损失。 要关闭此function,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog] 。

如何在混合Web API和MVC应用程序中使用Autofac解析Web API控制器?

嗨,我有一个MVC应用程序,我已经为我的Web API定义了一些依赖项。 public class AutofacWebApiDependenceResolver : IDependencyResolver { private readonly IComponentContext container; public AutofacWebApiDependenceResolver(IContainer container) { if (container == null) { throw new ArgumentNullException(“container”); } this.container = container; } public object GetService(Type serviceType) { if (serviceType == null) { throw new ArgumentNullException(“serviceType”); } var ret = this.container.ResolveOptional(serviceType) ; return ret; } public IEnumerable GetServices(Type serviceType) […]

AngularJS使用Asp.net Web API:$ http post返回XMLHttpRequest无法加载:预检的响应具有无效的HTTP状态代码405

当尝试使用$http将json POST到Asp.net Web API服务器时,它返回以下错误 XMLHttpRequest cannot load http://localhost:62158/api/video/add. Response for preflight has invalid HTTP status code 405 但是从$.ajax发出相同的请求是工作文件。 $ HTTP代码 $http.post(url, data, config) .success(function (data, status, headers, config) { defered.resolve(data); }) .error(function (data, status, header, config) { defered.reject(data); }); $ .ajax代码 $.ajax({ type: “POST”, url: url, data: newVideo, success: function (a) { debugger; }, error: […]

DelegatingHandler用于WebApi中的响应

我目前正在使用几个委托处理程序(派生自DelegatingHandler类)在发送之前处理请求,例如validation签名等。这一切都非常好,因为我不必在所有调用上复制签名validation(例如)。 我想对来自同一Web请求的响应使用相同的原则。 是否有类似于DelegatingHandler的响应? 在某种程度上,在返回到方法之前捕获响应的方法是什么? 附加信息:我使用HttpClient.PutAsync(…)调用web api

WebApi HttpClient不发送客户端证书

我正在尝试使用客户端证书使用ssl和客户端身份validation来保护我的RESTful WebApi服务。 去测试; 我已生成一个自签名证书并放置在本地计算机,受信任的根证书颁发机构文件夹中,并且我已生成“服务器”和“客户端”证书。 服务器的标准https无问题。 但是我在服务器中有一些代码来validation证书,当我使用提供我的客户端证书的测试客户端进行连接并且测试客户端返回403 Forbidden状态时,这永远不会被调用。 这实现了服务器在我的证书到达我的validation码之前失败了。 但是,如果我启动提琴手,它知道需要客户端证书,并要求我提供一个到我的文档\ Fiddler2。 我给了它我在我的测试客户端使用的相同客户端证书,我的服务器现在工作,并收到我期望的客户端证书! 这意味着WebApi客户端没有正确发送证书,我的客户端代码与我发现的其他示例几乎相同。 static async Task RunAsync() { try { var handler = new WebRequestHandler(); handler.ClientCertificateOptions = ClientCertificateOption.Manual; handler.ClientCertificates.Add(GetClientCert()); handler.ServerCertificateValidationCallback += Validate; handler.UseProxy = false; using (var client = new HttpClient(handler)) { client.BaseAddress = new Uri(“https://hostname:10001/”); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(“application/xml”)); var response = await client.GetAsync(“api/system/”); var str […]

无法为内容类型multipart配置Web API

我正在使用Web API – Web API 2.我的基本需求是创建一个API来更新用户的配置文件。 在这里,ios和android将以multipart / form-data的forms向我发送请求。 他们会向我发送一些图像参数。 但每当我尝试创建API时,我的模型每次都变为null。 我在WebApiConfig中添加了这一行: config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue(“multipart/form-data”)); 这是我的class级: public class UpdateProfileModel { public HttpPostedFileBase ProfileImage { get; set; } public string Name { get; set; } } 这是我的控制器: [Route(“api/Account/UpdateProfile”)] [HttpPost] public HttpResponseMessage UpdateProfile(UpdateProfileModel model) { } 我甚至没有在我的模型中获取参数值。 难道我做错了什么 ? 没有与此相关的答案对我有帮助。 它大约第3天,我已经尝试了几乎所有的方法。 但我无法实现它。 虽然我可以使用它,但如下所示,但这似乎不是一个好方法。 所以我避免它.. var httpRequest = HttpContext.Current.Request; […]

如何存根HttpControllerContext

我试图对从WebAPI(OData)控制器调用的一段代码进行unit testing,并接受一个HttpControllerContext: public string MethodToTest(HttpControllerContext context) { string pub = string.Empty; if (context != null) { pub = context.Request.RequestUri.Segments[2].TrimEnd(‘/’); } return pub; } 要对此进行unit testing,我需要一个HttpControllerContext对象。 我该怎么办呢? 我最初试图用Microsoft Fakes来存根,但HttpControllerContext似乎没有接口(为什么??),所以这似乎不是一个选项。 我应该只是新建一个新的HttpControllerContext对象,并可能存根其构造函数参数? 或者使用Moq框架(而不是!)

通过Web API发送的字符串包含在引号中

我使用C#在ASP.NET 4中使用我的Web API遇到了一个小问题。 我正在尝试创建一个前端GUI,它通过多个Web API发送和接收数据。 拥有多个API的原因与我们的网络有关,该网络由多个安全区域组成。 服务器位于不同的区域,简单的请求可能需要通过3个不同的API。 具体来说,我正在从GUI向第一个API发送一个JSON对象。 应该将JSON对象转发到下一个API,然后从那里创建一个新的JSON对象,并在同一路径下返回。 路径本身很好用。 问题是JSON对象一旦返回GUI就无法解析。 我收到一个用引号括起来的JSON字符串,每个API一次。 字符串可能会像这样开始: 嘿! 我是一个字符串,或各种JSON对象! API之间的第一跳给了我: “嘿!我是一个字符串,或者是各种各样的JSON对象!” 在下一跳之后它看起来像这样: “\“嘿! 我是一个字符串,或者是各种各样的JSON对象!\“” 当我的GUI掌握它时,我们有这样的事情: “\”\“”嘿!我是一个字符串,或者是各种各样的JSON对象!\\“\”“ 这是解析失败的原因,原因很明显。 JSON对象本身格式正确,但所有引号都会导致JSON.net解析器出现问题(对象内的所有引号也会被多次包装)。 到目前为止我尝试过的是将请求作为application / json类型和text / plain类型发送。 两者都做了同样的事情。 API返回一个HttpResponseMessage,它使用ReadAsStringAsync()读取。 我也试图避免字符串读取,只是直接从HttpRequestMessage读取到HttpResponseMessage并仅在GUI中执行ReadAsStringAsync(),但问题仍然存在。 JSON字符串是使用JSON.nets Serialize() – 方法创建的,并使用StringContent()放入HttpContent。 这似乎正确地完成了工作。 我相信当API和GUI收到HttpResponseMessage时会生成引号。 知道我如何发送和接收JSON字符串作为原始字符串,这是不是以任何方式处理? 我可以通过在每个API上将对象解析为JToken或JObject并再次序列化来绕过此行为。 然而,这不是一个好的解决方案 – 我宁愿API只是按照他们获得它的方式转发消息,而不是对它做任何事情。 我使用路由查看了前进,但是有许多授权内容正在进行,这需要我使用API​​操作,而不是重定向路由。 澄清(TLDR):理想的解决方案是让API简单地传递消息而不解析或读取任何内容。 只要消息源被授权,请求就被加密并且请求的URL有效,消息本身对每个“代理”API都无关紧要。

使用OData Wep Api在数据传输对象上嵌套filter

我有一个wep api项目使用odata消耗数据但是我遇到了odata wep api的一些问题。 当我执行该查询时 / api / values?$ top = 50&$ filter = Comments / Fortuneteller / FullName eq’some string’ 它给了我以下错误 “消息”:“URI中指定的查询无效。”,“ExceptionMessage”:“属性’Fortuneteller’的属性访问的父值不是单个值。属性访问只能应用于单个值。” 我不想从控制器返回实体对象。 有没有办法通过DTO过滤实体? 我在我的项目中使用Repository + Service层模式,我的项目结构就是这样 api controller service repository EF api控制器 [Queryable] public IQueryable Get() { return service.FiterBy((_ => true)); } 服务 public IQueryable FiterBy(Expression<Func> filter) { return repository.List().Where(filter).Select(_ => new FortuneDTO […]

如何对ASP.NET Web API路由进行unit testing?

我正在尝试编写一些unit testing,以确保对我的Web API发出的请求被路由到具有预期参数的预期API控制器操作。 我试图使用HttpServer类创建一个测试,但我从服务器得到500个响应,没有信息来调试问题。 有没有办法为ASP.NET Web API站点的路由创建unit testing? 理想情况下,我想使用HttpClient创建一个请求,让服务器处理请求并将其传递给预期的路由进程。