Tag: asp.net web api

如何回答请求但继续在WebApi中处理代码

我想回答一个请求,但继续处理代码。 我试过类似的东西: [HttpPost] public async Task SendAsync(MyRequest sms) { await Task.Run(() => Process(sms)); //need to run in a separate thread var response = new MyRequest(sms) { Ack = true }; return Request.CreateResponse(HttpStatusCode.Created, response.ToString()); } private async void Process(MyRequest sms) { var validationResult = new MyRequestValidation(_p2pContext, _carrierService).Validate(sms); if (string.IsNullOrWhiteSpace(validationResult.Errors[0].PropertyName)) // Request not valid return; Message msg; […]

访问方法’System.Web.Http.HttpConfiguration.DefaultFormatters()’失败

我的unit testing我的WEB API控制器有问题,我正在使用moq模拟我的存储库,进行设置和响应。 然后使用模拟存储库启动控制器。 问题是当我尝试从控制器执行调用时,我得到一个exception: 尝试通过方法’System.Web.Http.HttpConfiguration..ctor(System.Web.Http.HttpRouteCollection)’访问方法’System.Web.Http.HttpConfiguration.DefaultFormatters()’失败。 在System.Web.Http.HttpConfiguration..ctor(HttpRouteCollection路由)处于EyeShield.Api.Tests.PersonsControllerTests.Get_Persons_ReturnsAllPersons()的System.Web.Http.HttpConfiguration..ctor()处 说实话,不知道这里可能出现什么问题。 有谁知道这里可能存在什么问题? 控制器: using System; using System.Net; using System.Net.Http; using EyeShield.Api.DtoMappers; using EyeShield.Api.Models; using EyeShield.Service; using System.Web.Http; namespace EyeShield.Api.Controllers { public class PersonsController : ApiController { private readonly IPersonService _personService; public PersonsController(IPersonService personService) { _personService = personService; } public HttpResponseMessage Get() { try { var persons = PersonMapper.ToDto(_personService.GetPersons()); […]

401未经授权的错误web api mvc windows身份validation

我收到401未经授权的错误。 我的网络服务是用mvc编写的。 在IIS中配置为使用Windows身份validation。 下面是小提琴手的截屏 当我从浏览器点击URL时,它会弹出窗口输入用户名和密码。 如何避免弹出窗口? 我从另一个窗口服务调用这个web api。

在下载时将用户特定数据嵌入到authenticode签名安装程序中

我有一个使用InnoSetup安装的Windows窗体应用程序,我的用户从我的网站下载。 他们将此软件安装到多台PC上。 该应用程序与Web API进行通信,该API必须能够识别用户。 我正在创建一个Web应用程序,用户可以登录并下载该应用程序。 我想在安装程序中嵌入一个通用唯一ID,这样他们就不必在安装后再次登录。 我希望他们下载并运行setup.exe,并让应用程序自行处理。 我正在考虑几个选项: 将用户特定的UUID嵌入到setup.exe中,并在Web服务器上按需执行代码签名 缺点:不知道怎么做? 将用户特定的UUID嵌入到安装程序文件的名称中(例如setup_08adfb12_2712_4f1e_8630_e202da352657.exe) 缺点:这不是很漂亮,如果重命名安装程序会失败 将安装程序和包含UUID的设置文件包装到自解压缩zip中 如何将用户特定数据嵌入到Web服务器上的已签名可执行文件中?

Unity IoC不会将dependency injectionWeb API Controller

我是使用Unity的新手,但我的问题是每当我调用我的Web服务时,我都会得到一个例外情况 “确保控制器具有无参数的公共构造函数” 我已经遵循了多个教程,但仍然遇到了同样的问题。 在我的WebApiConfig类的Register函数中,我有 var container = new UnityContainer(); container.RegisterType(new HierarchicalLifetimeManager()); config.DependencyResolver = new UnityResolver(container); 这是我的UnityResolver类 using Microsoft.Practices.Unity; using System; using System.Collections.Generic; using System.Web.Http.Dependencies; public class UnityResolver : IDependencyResolver { protected IUnityContainer container; public UnityResolver(IUnityContainer container) { if (container == null) { throw new ArgumentNullException(“container”); } this.container = container; } public object GetService(Type serviceType) { […]

如何删除json字符串中的反斜杠和双引号

我试图将字符串传递给json对象,它的工作原理。 但是在json中有一些反斜杠和双引号! 我该如何删除它们? 我正在使用c# Web API 。 这是我的代码。 public string jsonvalues() { var x = new { status = “Success” }; var javaScriptSerializer = new System.Web.Script.Serialization.JavaScriptSerializer(); var jsonString = javaScriptSerializer.Serialize(x); return jsonString; } 当我在控制器中返回此函数时,我得到这样的结果 “{\” 状态\ “:\” 成功\ “}”

Azure Web应用程序服务,使用混合连接管理器使用HttpClient调用onpremise WEB API

我们在本地网络机器上部署了Web服务(asp.net core mvc)。 我们正尝试使用部署在Azure上的App Service来调用这些WEB API。 但是当我们尝试使用“HTTP”协议连接它时,它会给出超时错误或任务被取消错误。 在“HTTPS”的情况下,它给出“ 发生安全错误错误 ”。 我们在Azure App Service上创建了Hybrid连接,以连接到onpremise web api服务,该服务在线显示80和443端口。 我们也在本地网络机器上设置了Hybrid Connection Manager。 以下是用于调用代码的代码段,该代码段部署在Azure App Service上(例如https://xyz.azurewebsite.com ) try { var httpClient = new HttpClient(); httpClient.Timeout = TimeSpan.FromMinutes(60); httpClient.BaseAddress = new Uri(“https://onpremise”); httpClient.DefaultRequestHeaders.Accept.Clear(); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(“application/json”)); ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; //Simple […]

获取“尝试使用WebAPI时未找到与名为’SampleSlashBaseService’的控制器匹配的类型”

我有一个webapi项目,其基础ApiController名为SlashBaseService: [RouteArea(“uBase”)] public abstract class SlashBaseService : ApiController { } 生成的dll用于WebForms项目中,因此我还有一个WebActivator类,其中包含以下代码来生成路由: RouteTable.Routes.MapHttpAttributeRoutes(config => { // Get all services inheriting from SlashBaseService foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) { foreach (var type in assembly.GetTypes()) { if (type.IsSubclassOf(typeof(SlashBaseService))) { // Scan assembly config.ScanAssembly(assembly); // Skip the remaining types in this assembly break; } } } }); RouteTable.Routes.MapHttpRoute( name: […]

有没有办法将Database.SqlQuery作为异步运行?

我有以下内容: var sql = @”Select case when Test.TestTypeId = 1 then Exam.Name when Test.TestTypeId = 2 then Topic.Name end as Name, Test.Title, Test.TestId, Test.QuestionsCount FROM Test LEFT JOIN Exam ON Test.ExamId = Exam.ExamId LEFT JOIN Topic ON Test.TopicId = Topic.TopicId WHERE Test.TestStatusId = 1 — Current”; var tests = db.Database.SqlQuery(sql).ToList(); 我正在为此寻找一种异步方法,但它似乎并不存在。 有没有办法可以运行这个异步?

WebApi + Simple Injector + OWIN

我试图在WebAPI项目中使用SimpleInjector和OWIN。 但是, ConfigureAuth的以下行失败 app.CreatePerOwinContext(container.GetInstance); 例外情况是ApplicationUserManager注册为“Web API请求”生活方式,但实例是在Web API请求的上下文之外请求的。 我正在使用container.RegisterWebApiRequest(); 在容器初始化。 (如果我使用Register而不是RegisterWebApiRequest则不会有任何例外,但根据简单的注入器文档,这不是首选方法) 据我所知,需要使用CreatePerOwinContext注册ApplicationUserManager ,以便OWIN正常工作。 我想知道如果Simple Injector在启动期间无法解析实例,我们如何使用Simple Injector执行此操作。 我已经在这个SO答案中尝试过该方法,但它失败了同样的消息。 知道怎么解决这个问题?