Вопросы с тегами [asp.net-web-api]

0

голосов
1

ответ
18

Просмотры

Как добавить «код» в ответ Свода IHttpActionResult возврата BadRequest (Message)

Я возвращаю BadRequest ( «Ошибка Invalid продукта Id»), который возвращает мне код ответа 400 и тело ответа { «ошибка»: { «код»: «», «сообщение»: «Ошибка Недопустимый идентификатор продукта»}} Как я могу отправить код ответа 400 в теле ответа так что я получаю ответ тела как: { «ошибка»: { «код»: 400, «сообщение»: «ошибка Недопустимый идентификатор продукта»}}
Sushrut Bhosale
1

голосов
2

ответ
91

Просмотры

Вызов синхронного метода в качестве асинхронной моды?

Я разрабатываю проект ASP.NET MVC WebAPI и один из методов должен сделать поиск LDAP. Объем информации, поиск получает от сервера LDAP обеспечивает вызов занимает не менее 7 секунд. Вызов, так как он использует классы и методы System.DirectoryServices.Protocols, синхронный и неизменяемый. Объем трафика, этот API будет получать достаточно большой (даже если API находится во внутренней сети), так что 7 секунд для каждого вызова на сервер LDAP не является хорошей идеей. Так что я хочу знать это: Это хорошая идея, чтобы обернуть это в асинхронном методе? Что такое правильный способ ASync этого вызова? (В ожидании Task.Run (() => Search (PARAMS)) приемлемый путь?)
Léster
1

голосов
0

ответ
328

Просмотры

Excel download from Asp.Net Web API using Axios post method

У меня есть действие, которое возвращает первенствовать файл. [HttpPost] общественных асинхронной Целевой экспорт ([FromBody] QueryParameters QP) {вар поток = _service.GetExcel (QP); вар exportFileName = "MyExcel"; вернуть файл (поток "приложение / vnd.openxmlformats-officedocument.spreadsheetml.sheet", exportFileName); } // QueryParameters общественного класса {общественного ИНТ С {получить; задавать; } Общественности Int Page {получить; задавать; } Общественного INT Размер {получить; задавать; }} Я использую реагировать JS с библиотекой Аксиос сделать вызовы веб-API. Теперь вопрос здесь, как я могу сделать вызов выше API с помощью AXIOS после вызова, который запускает браузер, чтобы загрузить Excel возвращенного API и сохранить его? Я дал ниже попробовать, но это, кажется, ничего не приходит в объект ответа в AXIOS вызова, но я мог видеть содержимое первенствовать в браузерах отклика на вкладке Сети. Так это выглядит, как браузер получает содержимое файла, но не сохраняя его. Любая идея, что мне не хватает, пожалуйста? Const requestBody = {С: 10, страницы: 2, Размер: 10}; axios.request ( 'POST', 'https://myexport.dev.com/export', requestBody) .then (ответ => {данные: response.data}) // ответ пришедшего утратившим здесь .catch (( ошибка) => {// ошибка}} рукоятка); Заранее спасибо. пожалуйста? Const requestBody = {С: 10, страницы: 2, Размер: 10}; axios.request ( 'POST', 'https://myexport.dev.com/export', requestBody) .then (ответ => {данные: response.data}) // ответ пришедшего утратившим здесь .catch (( ошибка) => {// ошибка}} рукоятка); Заранее спасибо. пожалуйста? Const requestBody = {С: 10, страницы: 2, Размер: 10}; axios.request ( 'POST', 'https://myexport.dev.com/export', requestBody) .then (ответ => {данные: response.data}) // ответ пришедшего утратившим здесь .catch (( ошибка) => {// ошибка}} рукоятка); Заранее спасибо.
Parashuram
1

голосов
1

ответ
37

Просмотры

SignalR methods in WebApi controller not called in specific setup

Ну, у меня есть signalR хаб: ReportHub общественного класса: Hub {частный статический IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext (); общественного недействительными SendMessage (строка текста) {Clients.All.sendMessage (текст); } Государственной статической силы ServerSendMessage (строка текста) {hubContext.Clients.All.sendMessage (текст); }} Также у меня есть код клиента в JS, на каком-то вид report.client.sendMessage = сообщение => {Alert ( «сообщение от сервера:» + сообщение); } И у меня есть WebAPI действие, например: [HttpGet] [Маршрут ( "апи / отчет / тест")] общественность ИНТ GetTest () {ReportHub.ServerSendMessage ( "сообщение"); вернуться 42; } Когда я открыть окно с signalR-захватной JS кода в одном браузере, а в другом окне браузера запрашивает действие WebAPI, набрав Http: // .. / API / отчет / тест - все работает, и предупреждение не появляются Но когда звонит WebAPI действия через почтальон, или любой другой клиент остального, вообще никакого эффекта, report.client.sendMessage = сообщение => {Alert ( "сообщение от сервера : «+ сообщение); } - не работает Может кто-нибудь помочь?
udovichenko
1

голосов
1

ответ
169

Просмотры

Прерванных загрузок при загрузке файла с веб-Апи (удаленный хост закрыл ошибки 0x800704CD)

Я прочитал около 20 других сообщений об этой конкретной ошибке, но большинство, похоже, проблемы с кодом вызывающего Response.Close или подобным, что не наш случай. Я понимаю, что эта конкретная ошибка означает, что обычно пользователь просмотрел от веб-страницы или отмены запроса на полпути, но в нашем случае мы получаем эту ошибку без отмены запроса. Я могу наблюдать ошибку только после того, как несколько секунд, загрузка только терпит неудачу в браузере (как Chrome и IE, так что это не конкретный браузер). У нас есть контроллер API веб, который служит загрузки файла. [HttpGet] общественный HttpResponseMessage Скачать () {// // Перечисляет каталог и возвращает только для чтения FileStream потока загрузки вара = dataProvider.GetServerVersionAssemblyStream (configuration.DownloadDirectory, configuration.ServerVersion); если (поток == NULL) {вернуть новый HttpResponseMessage (HttpStatusCode.NotFound); } Ответ переменная = новый HttpResponseMessage (HttpStatusCode.OK) {Содержание = новый StreamContent (поток)}; response.Content.Headers.ContentDisposition = новый ContentDispositionHeaderValue ( "вложение"); response.Content.Headers.ContentDisposition.FileName = $ "{configuration.ServerVersion} .exe"; response.Content.Headers.ContentType = новый MediaTypeHeaderValue (MediaTypeNames.Application.Octet); response.Content.Headers.ContentLength = stream.Length; вернуть ответ; } Есть ли что-то неправильно, мы делаем в нашем методе загрузки, или есть что-то нам нужно настроить в IIS? Это происходит спорадически. Я не могу наблюдать картину, он иногда работает и в других случаях он не раз. Файл загрузки составляет около 150MB скачать инициирована с гиперссылкой на нашем веб-сайте, не существует никакого специального вызова код загрузки через HTTPS (HTTP отключен) Web Api размещается на Azure Это не по всей видимости, тайм-аута , это может произойти только после того, как второй или два, так что это не ударять вторые значения тайм-аута по умолчанию 30 Я также заметил, что я не могу показаться, чтобы инициировать несколько загрузки файлов с сервера одновременно, который вызывает озабоченность. Это должно быть в состоянии обслуживать 150+ бизнеса и одновременные загрузки, поэтому я обеспокоен есть что-то нам нужно настроить в IIS или веб-Апи. нет специального вызова кода Загрузка закончилась HTTPS (HTTP отключен) Веб-Апи размещается на Azure Это не по всей видимости, таймаут, это может произойти только после того, как второй или два, так что это не ударять по умолчанию 30 вторые значения тайм-аута я также заметил, что я не могу показаться, чтобы инициировать несколько загрузки файлов с сервера одновременно, который вызывает озабоченность. Это должно быть в состоянии обслуживать 150+ бизнеса и одновременные загрузки, поэтому я обеспокоен есть что-то нам нужно настроить в IIS или веб-Апи. нет специального вызова кода Загрузка закончилась HTTPS (HTTP отключен) Веб-Апи размещается на Azure Это не по всей видимости, таймаут, это может произойти только после того, как второй или два, так что это не ударять по умолчанию 30 вторые значения тайм-аута я также заметил, что я не могу показаться, чтобы инициировать несколько загрузки файлов с сервера одновременно, который вызывает озабоченность. Это должно быть в состоянии обслуживать 150+ бизнеса и одновременные загрузки, поэтому я обеспокоен есть что-то нам нужно настроить в IIS или веб-Апи.
David Anderson
1

голосов
1

ответ
70

Просмотры

как проверить список в Web API

Я пишу веб-интерфейс API, который принимает список клиентов в от загрузки файла. Каждая строка в файле представляет собой одинарные клиент. Там может быть «N» клиентов в одном файле. Для каждой строки, требуется проверка достоверности. Сообщения об ошибках должны быть отображены в соответствующей строке. POST / API / Список клиентов, если это API, как выполнить проверку на корректность код что-то вроде этого, общественное асинхронный Task UploadCustomers (Список клиентов) {если (ModelState.IsValid!) Вернуть BadRequest (?); // Некоторые действия}
Vijay Balkawade
1

голосов
2

ответ
220

Просмотры

Как добавить поле в моей конфигурации кварцевой динамически?

У меня есть раздел конфигурации кварца в моем web.config, и я хочу, чтобы добавить ключевое поле значения для него. (Я знаю, что могу просто пойти в web.config и добавить его вручную, но что поражения цели) Я попытался с помощью этого способа уага конфига = (NameValueCollection) WebConfigurationManager.GetSection ( «кварц»); config.Add ( "quartz.dataSource.quartzDS.connectionString", "источник данных = .."); но это не удалось, потому что коллекция только для чтения и не может быть изменена. Любой совет, чтобы, как это сделать? Изменить: Я в конечном итоге копирование конфигурации к NameValueCollection, а затем скопировать его на другой (для свойств только для чтения) добавить ключевые ценности, которые я хочу, и передавая ее функции мне нужно. вар oldConfig = (NameValueCollection) WebConfigurationManager.GetSection ( "кварц"); вар конфигурации = Тест (oldConfig); вар ConnectionString = UnitOfWork. GetConnectionStringByTenantIdentifier (tenantId); config.Add ( "quartz.dataSource.quartzDS.connectionString", ConnectionString); ждут unitOfWork.GetService () StartScheduler (конфигурации, tenantId). таким образом, у меня будет своя конфигурация для каждого арендатора, как я хочу. Извините, если мой вопрос не был ясен.
bleh10
1

голосов
1

ответ
530

Просмотры

Как разрешить HTTP Web запрос Базовое соединение закрыто ошибка при вызове API?

Я пытаюсь проверить ZipCode с городом с помощью UPS API «https://www.ups.com/ups.app/xml/AV». Ниже мой код строка xmlRequest = "" + "" + "хххх" + "ххх" + "ххх" + "" + "" + "" + "" + "" + "Данные клиента" + "1,0001" + " "+ "АВ" + "" + "" + "" + "38305" + "" + "" + "ТЕННЕССИ" + "" + "" + ""; строка URL = "https://www.ups.com/ups.app/xml/AV"; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; //ServicePointManager.SecurityProtocol = (SecurityProtocolType) 3072; //ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11; HttpWebRequest REQ = (HttpWebRequest) WebRequest.Create (URL); байт [] requestBytes = System.Text.Encoding.ASCII.GetBytes (xmlRequest); req.Method = "POST"; req.ContentType = "применение / х-WWW-форм-UrlEncode"; req.ContentLength = requestBytes.Length; // req.KeepAlive = ложь; //req.UseDefaultCredentials = TRUE; // req.UserAgent = "Patoooey"; Поток requestStream = req.GetRequestStream (); requestStream.Write (requestBytes, 0, requestBytes.Length); requestStream.Close (); HttpWebResponse Рез = (HttpWebResponse) req.GetResponse (); StreamReader ср = новый StreamReader (res.GetResponseStream (), System.Text.Encoding.Default); Строка backstr = sr.ReadToEnd (); Он отлично работает на моей локальной машине. но когда я развернуть его на сервере. она дает ошибки Базовое соединение закрыто: Непредвиденная ошибка приема ._____ на System.Net.HttpWebRequest.GetRequestStream (TransportContext & контекста) при System.Net.HttpWebRequest.GetRequestStream () Я попытался установить ServicePointManager.SecurityProtocol к TLS, TLS11 или TLS12, но ничего не работает на сервере. Также пытались request.KeepAlive = ложь, request.UseDefaultCredentials = истиной и request.UserAgent к «любому слову больше, чем из 5 символов». Сервер работает под управлением центра данных Windows Server SP2 Ваша помощь будет оценена. Спасибо
mck
0

голосов
0

ответ
4

Просмотры

How to display data on xamarin.android edit text using web api

I'm trying to display the data from SQL server using web API, get method on edit text in xamarin.android. The data will display on the edit text once the button is clicked. I've followed all the steps(exactly) as in the Youtube tutorial but unfortunately, the data did not show up on the edit text, instead it shows json format on the screen. What should i do to fix this problem? I've tried using web services, still didn't show up. protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.PersonalInfo); ActionBar.SetDisplayHomeAsUpEnabled(true); EditText email = FindViewById(Resource.Id.txtEmail); EditText firstName = FindViewById(Resource.Id.txtFirstName); EditText lastName = FindViewById(Resource.Id.txtLastName); EditText gen = FindViewById(Resource.Id.txtGender); EditText ic = FindViewById(Resource.Id.txtIC); EditText address = FindViewById(Resource.Id.txtAddress); EditText phoneNo = FindViewById(Resource.Id.txtPhoneNo); EditText username = FindViewById(Resource.Id.txtUsername); EditText password = FindViewById(Resource.Id.txtPwd); EditText payment = FindViewById(Resource.Id.txtPayMethod); Button btnGetAcc = FindViewById(Resource.Id.btnGetAcc); btnGetAcc.Click += async delegate { VehicleRecord vehicRec = null; HttpClient client = new HttpClient(); string url = "http://192.168.0.135/PMSAPI/api/clients/" + username.Text.ToString(); var result = await client.GetAsync(url); var json = await result.Content.ReadAsStringAsync(); try { vehicRec = Newtonsoft.Json.JsonConvert.DeserializeObject(json); } catch (Exception ex) { } if (vehicRec == null) { Toast.MakeText(this, json, ToastLength.Short).Show(); } else { firstName.Text = vehicRec.firstName; lastName.Text = vehicRec.lastName; gen.Text = vehicRec.gender; ic.Text = vehicRec.icNo; address.Text = vehicRec.address; phoneNo.Text = vehicRec.phoneNo; username.Text = vehicRec.username; password.Text = vehicRec.password; payment.Text = vehicRec.paymentMethod; } }; } The expected output should display data from SQL server on edit text but the actual output is it display all the data in json-format. The actual output
Yonce
1

голосов
0

ответ
39

Просмотры

Войти Исключения с EntityFramework в WebAPI Exception Filter или IExceptionLogger

Я имею в виду использовать ExceptionLogger или ExceptionFilterAttribute в моем Web API приложения 2.x. Мой OR / M является Entity Framework 6 и AutoFac как мой IoC. Рассмотрим атрибут исключения ниже: ApiExceptionFilterAttribute общественного класса: ExceptionFilterAttribute {общественного IDbContext MyContext {получить; задавать; } Общественного переопределения недействительный OnException (HttpActionExecutedContext actionExecutedContext) {base.OnException (actionExecutedContext); // некоторый код MyContext.SaveChanges (); }} Я думаю, если мое приложение выбрасывает любое исключение OnException метод будет вызывать и мне нужен новый экземпляр DbContext, чтобы сохранить журнал ошибок, но моя конфигурация AutoFac для DbContext является InstancePerRequest, так что я думаю, что AutoFac разрешит MyContext как совместно DbContext. Вот моя конфигурация AutoFac для DbContext: builder.RegisterType (). Как () .InstancePerRequest (); Как я мог бы сделать AutoFac к reslove DbContext как новый экземпляр для ApiExceptionFilterAttribute?
Ali Bahraminezhad
1

голосов
1

ответ
50

Просмотры

Как разместить данные в Web API от хранимых процедур и EF Db первого подхода

У меня есть проблема в отправке данных в моем проекте веба-API, у меня есть метод действия и хранимая процедура и таблица, с помощью которого хотят выполнить операцию после, но я получаю внутреннее сообщение об ошибке сервера, когда я отправляю данные из стельки моего стола структура приведено ниже общественного класс tblImage частичного {общественной строка ImageID {получить; задавать; } Публичная строка ImagePath {получить; задавать; } Публичная строка ImageCategory {получить; задавать; }} Моя хранимая процедура кода производится в Visual Studio приводятся ниже общественные виртуальный ИНТ InsertDynamicImage (строки ImageID, струнный ImagePath, строка imageCategory) {вара imageIdParameter = ImageID! = NULL? новый ObjectParameter ( "ImageID", ImageID): новый ObjectParameter ( "ImageID", TypeOf (строка)); вар imagePathParameter = ImagePath! = NULL? новый ObjectParameter ( "ImagePath", ImagePath): новый ObjectParameter ( "ImagePath", TypeOf (строка)); вар imageCategoryParameter = imageCategory! = NULL? новый ObjectParameter ( "ImageCategory", imageCategory): новый ObjectParameter ( "ImageCategory", TypeOf (строка)); Возвращение ((IObjectContextAdapter) это) .ObjectContext.ExecuteFunction ( "InsertDynamicImage", imageIdParameter, imagePathParameter, imageCategoryParameter); }} Мой код контроллера приведен ниже [HttpPost] [Маршрут ( "апи / tblProducts / DynamicImage")] общественность IHttpActionResult AddDynamic (tblImage обзор) {если (! ModelState. IsValid) {вернуть BadRequest (ModelState); } Вар AltAddress = db.InsertDynamicImage (Review.ImageId, Review.ImagePath, Review.ImageCategory); вернуться CreatedAtRoute ( "DefaultApi", новый {идентификатор = Review.ImageId}, обзор); } Сообщения об ошибке дается стелькой показано ниже { «Сообщение»: «Произошла ошибка.», «ExceptionMessage»: «UrlHelper.Link не должен возвращать нуль.», «ExceptionType»: «System.InvalidOperationException», «StackTrace»: "в System.Web.Http.Results.CreatedAtRouteNegotiatedContentResult`1.Execute () \ г \ п на System.Web.Http.Results.CreatedAtRouteNegotiatedContentResult`1.ExecuteAsync (CancellationToken CancellationToken) \ г \ п на System.Web.Http. Контроллеры.
Akshay Tomar
1

голосов
0

ответ
310

Просмотры

ORA-00932: несовместимые типы данных: ожидается NCHAR получил NCLOB

Oracle.ManagedDataAccess.EntityFramework 6 библиотеки используются для доступа к базе данных Oracle из приложения WebAPI MVC ASP.Net. Это самая последняя версия библиотеки из NuGet по состоянию на 14 ноября 2017 года общественного IEnumerable GetGis (строка ID) {вар model3 = blnobat.Select (). OrderBy (р => p.A_NOBAT) .гд (р => p.A_COUNTERNO . .Value.ToString () Содержит (идентификатор)); Возвращение (model3) .ToString (); } Тип A_COUNTERNO в базе данных number.when я запустить программу, Visual Studio показать эту ошибку: ORA-00932: несовместимые типы данных: ожидается NCHAR получил NCLOB спасибо,
aria
1

голосов
1

ответ
237

Просмотры

Autofac ошибка Web API Убедитесь, что контроллер имеет открытый конструктор без параметров

Я получаю эту ошибку при настройке Autofac с ASP.NET WebAPI. при попытке создать контроллер типа «UserController» произошла ошибка. Убедитесь, что контроллер имеет открытый конструктор без параметров. Startup.cs общественного частичного класса Startup {общественного недействительными конфигурации (IAppBuilder приложение) {вар файл = HostingEnvironment.MapPath ( "~ / log4net.config"); если (файл! = NULL) {вар CONFIGFILE = новый FileInfo (файл); если (configFile.Exists) XmlConfigurator.ConfigureAndWatch (CONFIGFILE); остальное BasicConfigurator.Configure (); } Еще {BasicConfigurator.Configure (); } Вар строитель = новый ContainerBuilder (); вар конфигурации = новый HttpConfiguration (); // Зарегистрировать контроллеры Web API. builder.RegisterApiControllers (Assembly.GetExecutingAssembly ()); builder.RegisterWebApiFilterProvider (конфигурации); builder.RegisterModule (новый WebModule (приложение)); // Регистрация контроллеров MVC. builder.RegisterControllers (Assembly.GetExecutingAssembly ()); // ВАРИАНТ: Регистрация модели вяжущие, которые требуют DI. builder.RegisterModelBinders (Assembly.GetExecutingAssembly ()); builder.RegisterModelBinderProvider (); // ВАРИАНТ: Регистрация веб-абстракций, как HttpContextBase. builder.RegisterModule (); // ВАРИАНТ: Включить инъекции свойства в страницах просмотра. builder.RegisterSource (новый ViewRegistrationSource ()); // ВАРИАНТ: Включить инъекции свойств в фильтрах действий. builder.RegisterFilterProvider (); // Регистр конфигурации builder.Register (Ct => конфигурации) .AsSelf () SingleInstance (). HelpPageConfig.Register (конфигурации); вар контейнер = builder.Build (); config.DependencyResolver = новый AutofacWebApiDependencyResolver (контейнер); DependencyResolver.SetResolver (новый AutofacDependencyResolver (контейнер)); app.UseAutofacMiddleware (контейнер); app.UseAutofacWebApi (конфигурации); app.UseAutofacMvc (); WebApiConfig.Register (конфигурации); app.UseCors (Microsoft.Owin.Cors.CorsOptions.AllowAll); app.UseWebApi (конфигурации); config.EnsureInitialized (); }} Global.asax.cs защищен Application_Start пустот () {AreaRegistration.RegisterAllAreas (); GlobalConfiguration.Configure (WebApiConfig.Register); } WebModule.cs WebModule общественного класса: Модуль {частные чтения IAppBuilder _app; общественный WebModule (IAppBuilder приложение) {_app = приложение; } Защищен переопределение аннулируются нагрузки (ContainerBuilder строитель) {// ---- Утилиты --------------------------------- - builder.RegisterType () .Как () SingleInstance (). builder.RegisterType () .Как () SingleInstance (). builder.RegisterType () .Как () SingleInstance (). builder.RegisterType () .Как () SingleInstance (). builder.RegisterType () .Как () SingleInstance (). builder.RegisterType () .Как () SingleInstance (). // ---- Бизнес ------------------------------------ builder.RegisterType () .Как () .InstancePerRequest (); // ---- Оценщик ----------------------------------- builder.RegisterType () .AsSelf ( ) .SingleInstance (); // ---- Контроллеры ----------------------------------- builder.RegisterType () .AsWebApiActionFilterFor ( ) .InstancePerRequest (); base.Load (строитель); }} UserController.cs [RoutePrefix ( "апи / User")] класс UserController общественности: ApiController {частный IUserBusiness _userBusiness только для чтения; общественного UserController (IUserBusiness userBusiness) {_userBusiness = userBusiness; } ...} Я считаю, что я пропускаю некоторые незначительные вещи, которые я не имею ни малейшего представления, что любая помощь будет оценена. RegisterType () .AsWebApiActionFilterFor () InstancePerRequest (). base.Load (строитель); }} UserController.cs [RoutePrefix ( "апи / User")] класс UserController общественности: ApiController {частный IUserBusiness _userBusiness только для чтения; общественного UserController (IUserBusiness userBusiness) {_userBusiness = userBusiness; } ...} Я считаю, что я пропускаю некоторые незначительные вещи, которые я не имею ни малейшего представления, что любая помощь будет оценена. RegisterType () .AsWebApiActionFilterFor () InstancePerRequest (). base.Load (строитель); }} UserController.cs [RoutePrefix ( "апи / User")] класс UserController общественности: ApiController {частный IUserBusiness _userBusiness только для чтения; общественного UserController (IUserBusiness userBusiness) {_userBusiness = userBusiness; } ...} Я считаю, что я пропускаю некоторые незначительные вещи, которые я не имею ни малейшего представления, что любая помощь будет оценена.
Ali Shahzad
1

голосов
1

ответ
62

Просмотры

добавить параметры на карте Web API маршрутов на основе условий

В моем приложении есть 4 выпадающие (семья, класс, серия, Fusebody) и одна кнопка поиска. Я должен искать таблицу продуктов на основе выбора этих Dropdowns. Этот поиск может быть сделан с помощью любого значения один выпадающего из того, что 4 выпадающих или нескольких. Как ниже я попробовал. Пример: от одного выбора выпадающего [Route ( "API / KendoCascading / GetclRes / {Црес}")] HttpResponseMessage GetclRes общественного (строка Цреса) {использования (CrossReferenceTool1Entities ср = новые CrossReferenceTool1Entities ()) {вара запросы = (от и в сП. Продукты, где (u.PrivateOnly == ложь && u.SelectionTool == верно && u.ProductTypeID == 2 && (u.ProductFamilyID == 11 || u.ProductFamilyID == 12 || u.ProductFamilyID == 58 || и .ProductFamilyID == 59 || u.ProductFamilyID == 92) && u.Class.Contains (Cres)) выберите U). Distinct () ToList (). HttpResponseMessage разрешение; разреш = Request.CreateResponse (HttpStatusCode.OK, запрос); вернуться Рез; }} Пример: два различных выбор выпадающих [Маршрут ( "API / KendoCascading / GetresClsbyFam / {Црес} / {семьи}")] общественность HttpResponseMessage GetresClsbyFam (строка Црес, Int семьи) {вара запросы = (от мк в ep.Products где (u.PrivateOnly == ложь && u.SelectionTool == верно && u.ProductTypeID == 2 && (u.ProductFamilyID == 11 || u.ProductFamilyID == 12 || u.ProductFamilyID == 58 || u.ProductFamilyID == 59 || u.ProductFamilyID == 92) && u.Class.Contains (Cres) && u.ProductFMSFamiliesID == семейство) выберите и) .ToList (); HttpResponseMessage разрешение; разреш = Request.CreateResponse (HttpStatusCode.OK, запрос); вернуться Рез; } Пример: выбор три выпадающих [Маршрут ( "API / KendoCascading / Getfaclapp / {семейство} / {Црес} / {APRES}")] общественность HttpResponseMessage Getfaclapp (целое семейство, строка Црес, строка APRES) {использование (CrossReferenceTool1Entities аль = новый CrossReferenceTool1Entities ()) {вар запросов = (от и в al.Products где (u.PrivateOnly == ложь && u.SelectionTool == верно && u.ProductTypeID == 2 && (u.ProductFamilyID == 11 || u.ProductFamilyID == 12 || u.ProductFamilyID == 58 || u.ProductFamilyID == 59 || u.ProductFamilyID == 92) && u.Class.Contains (Cres) && u.ProductFMSFamiliesID == семейство && al.ProductApplications.Any (D => d.ProductCode.Contains (u.ProductCode) && d.ProductApplicationName.Contains (APRES))) выберите U) .ToList (); HttpResponseMessage разрешение; разреш = Request.CreateResponse (HttpStatusCode.OK, запрос); вернуться Рез; }} Как это я разбила методы API до сих пор. Но есть так много комбинаций маршрутов. Если его можно добавлять параметры в зависимости от условий, как показано ниже: [Маршрут ( "апи / KendoCascading / GetResultByAll / {семейство} / {Црес} / {Приложения} / {Сеид}")] общественность HttpResponseMessage GetResultByAll (INT семьи, строка Црес, строка приложений, Int SEID) {если (семейство == 0) {результат = Query1; } Если (семейство == 0 && Црес == NULL) {результат = Query2; } } Как это. Я пытался, но в веб-апи маршрут его показывает ошибку. Не принимать какие-либо нулевые значения. Как это сделать? Но есть так много комбинаций маршрутов. Если его можно добавлять параметры в зависимости от условий, как показано ниже: [Маршрут ( "апи / KendoCascading / GetResultByAll / {семейство} / {Црес} / {Приложения} / {Сеид}")] общественность HttpResponseMessage GetResultByAll (INT семьи, строка Црес, строка приложений, Int SEID) {если (семейство == 0) {результат = Query1; } Если (семейство == 0 && Црес == NULL) {результат = Query2; } } Как это. Я пытался, но в веб-апи маршрут его показывает ошибку. Не принимать какие-либо нулевые значения. Как это сделать? Но есть так много комбинаций маршрутов. Если его можно добавлять параметры в зависимости от условий, как показано ниже: [Маршрут ( "апи / KendoCascading / GetResultByAll / {семейство} / {Црес} / {Приложения} / {Сеид}")] общественность HttpResponseMessage GetResultByAll (INT семьи, строка Црес, строка приложений, Int SEID) {если (семейство == 0) {результат = Query1; } Если (семейство == 0 && Црес == NULL) {результат = Query2; } } Как это. Я пытался, но в веб-апи маршрут его показывает ошибку. Не принимать какие-либо нулевые значения. Как это сделать? Црес == NULL) {результат = Query2; } } Как это. Я пытался, но в веб-апи маршрут его показывает ошибку. Не принимать какие-либо нулевые значения. Как это сделать? Црес == NULL) {результат = Query2; } } Как это. Я пытался, но в веб-апи маршрут его показывает ошибку. Не принимать какие-либо нулевые значения. Как это сделать?
user7411584
1

голосов
1

ответ
25

Просмотры

Почему осуществлять операции не являющихся идемпотентные?

При построении Web API, иногда мы, естественно идемпотентные операции (например, удаление данного ресурса), а иногда нет (как платить с картой) Тем не менее, вы всегда можете использовать случайное число в качестве идентификатора транзакции, чтобы не допустить этого более один раз (см, например, идемпотентность ключи Stripe в:. https://stripe.com/blog/idempotency) есть ли обратная сторона к этому? Почему бы не сделать это все время, и отказаться от не-идемпотентности навсегда?
josinalvo
1

голосов
1

ответ
47

Просмотры

OData проблема маршрутизации WebAPI: получить метод с идентификатором не соответствует

Я новичок в OData. Для целей обучения (руководствуясь этим обучающим), я создал образец WebAPI как следующее (только вставляя то, что я считаю уместным). Конфигурация: с помощью DataApi.Models; используя Microsoft.OData.Edm; используя System.Net.Http.Headers; используя System.Web.Http; используя System.Web.OData.Batch; используя System.Web.OData.Builder; используя System.Web.OData.Extensions; общественный статический класс WebApiConfig {государственный статический сила регистр (HttpConfiguration конфигурация) {config.MapODataServiceRoute ( "оды", нулевой GetEdmModel (), новый DefaultODataBatchHandler (GlobalConfiguration.DefaultServer)); config.Count () .Filter () .OrderBy () .Expand () .Select () .MaxTop (нуль); } Частный статический IEdmModel GetEdmModel () {ODataConventionModelBuilder строитель = новый ODataConventionModelBuilder (); builder.Namespace = "Демос"; builder.ContainerName = "DefaultContainer"; builder.EntitySet ( "Кодекс"); вар edmModel = builder.GetEdmModel (); вернуться edmModel; }} Модельные Классы: с использованием System.ComponentModel.DataAnnotations; пространства имен DataApi.Models {общественного класса код {[Key] общественности долго Id {получить; задавать; } [Требуется] общественная строка Значение {получить; задавать; } Общественного действия Срок действия {получить; задавать; } Общественный код Parent {получить; задавать; }}} Пространства имен DataApi.Models {общественный класс Действительность {[Key] общественности долго Id {получить; задавать; } [Требуется] общественный DateTime С {получить; задавать; } [Требуется] общественность DateTime Чтобы получить {; задавать; }}} Контроллер: используя DataApi.Models; с использованием системы; используя System.Collections.Generic; используя System.Linq; используя System.Web.Http; используя System.Web.OData; пространства имен DataApi.Controllers {[EnableQuery] общественный класс CodeController: ODataController {частного Список _codes; общественный CodeController () {_codes = новый список (); Срок действия = новый Валидность () {С = новый DateTime (2018, 1, 1), К = новый DateTime (2018, 12, 31)}; Код code1 = новый код () {Id = 1, Value = "1", Действительность = справедливость}; _codes.Add (код1); _codes.Add (новый код () {Id = 2, значение = "1.1", Родитель = код1, Срок действия =}); _codes.Add (новый код () {Id = 3, Значение = "1.2", Родитель = код1, Срок действия =}); _codes.Add (новый код () {Id = 4, Значение = "1.3", Родитель = код1, Срок действия =}); _codes.Add (новый код () {Id = 5, Значение = "1.4", Родитель = код1, Срок действия =}); _codes.Add (новый код () {Id = 6, Значение = "1.5", Родитель = код1, Срок действия =}); _codes.Add (новый код () {Id = 7, Значение = "1.6", Родитель = код1, Срок действия =}); _codes.Add (новый код () {Id = 8, значение = "1.7", Родитель = код1, Срок действия =}); _codes.Add (новый код () {Id = 9, значение = "2", Срок действия =}); } Общественного IHttpActionResult Get () {вернуться Ok (_codes.AsQueryable ()); } Общественного IHttpActionResult Get (строка ID) {длинный idNumeric = Convert.ToInt64 (ID); Хорошо вернуться (_codes.AsQueryable (). Первый (х => х. Id == idNumeric)); }}} Теперь я пытаюсь следовать матрицы, приведенной в документации, чтобы увидеть, как это способен на самом деле. К сожалению, я не могу запросить мой объект, Id HTTP: // локальный: 54307 / код $ = расширение действия // -> работает HTTP: // локальный: 54307 / код $ выберите = Значение // -> работает HTTP : // локальный: 54307 / код (1) // -> выбирает весь список HTTP: // локальный: 54307 / Код $ фильтр = значение эк "1.1" // -> работает Видит ли кто-нибудь мою ошибку ( ... и готов рассказать мне об этом)?
1

голосов
0

ответ
150

Просмотры

Аутентификация и получить щебетать твиты с помощью ASP.NET WebForms (MVC)

AuthorizeAndGetTweets.cs с использованием системы; используя System.Collections.Generic; используя System.Linq; используя System.Net.Http; используя System.Text; используя System.Threading.Tasks; используя System.Web; используя System.Web.Script.Serialization; используя Jil; пространств имен locationapi.Models {общественного класса AuthorizeAndGetTweets {асинхронной статический открытый Задача whatToName () {строка customerKey = "K3TfA3pIB9F2zibelScwwRy24"; Строка SecretKey = "2mBJJk74MOmUV3byb0WP76iOmA1xsUkcYnb0ZUh9quPxJVdiwc"; Строка ScreenName = "Manisha_PL"; // строка ScreenName = "Моди"; Строка Count = "10"; струнные чириканье = ждут AuthorizeAndGetTweets.getTweets (customerKey, SecretKey, ScreenName, количество); // Console.WriteLine (» } общественных асинхронных статических getTweets задач (строка customerKey, строка SecretKey, строка ScreenName, кол-строка, строка маркер = NULL) {если (маркер == NULL) {маркер = ждут аутентификации (customerKey, SecretKey); } // Console.WriteLine ( "маркера внутри функции" + маркер); HttpRequestMessage requestingTweets = новый HttpRequestMessage (HttpMethod.Get, string.Format ( "https://api.twitter.com/1.1/statuses/user_timeline.json?count={0}&screen_name={1}&trim_user=1&exclude_replies=1", рассчитывать, ScreenName)); requestingTweets.Headers.Add ( "Разрешение", "Канал" + маркер); HttpClient HttpClient = новый HttpClient (); HttpResponseMessage чириканье = ждут HTTPClient. SendAsync (requestingTweets); Строка tweetsstring = ждут tweets.Content.ReadAsStringAsync (); //Console.WriteLine(tweetsstring); // --------------------- // вар сериализатору = новый JavaScriptSerializer (); // динамический wholeResponse = serializer.Deserialize (tweetsstring); // переменная enumerableWholeResponse = (wholeResponse, как IEnumerable); // если (enumerableWholeResponse == NULL) // возвращает нуль; // IEnumerable UserList = enumerableWholeResponse.Select (х => (Пользователь) х [ "пользователь"]); // Еогеасп (Пользователь U в USERLIST) // {// Console.WriteLine (u.id); // Console.WriteLine (u.id_str); //} // --------------------- возврат tweetsstring; } Общественных асинхронной статической Задача подлинности (строка customerKey, строка SecretKey) {HttpClient authenticationClient = новый HttpClient (); HttpRequestMessage authenticationRequestMessage = новый HttpRequestMessage (HttpMethod.Post, "https://api.twitter.com/oauth2/token"); вар customerInfo = Convert.ToBase64String (новый UTF8Encoding () GetBytes (customerKey + ":" +. SecretKey)); authenticationRequestMessage.Headers.Add ( "Авторизация", "Basic" + customerInfo); authenticationRequestMessage.Content = новый StringContent ( "grant_type = client_credentials", Encoding.UTF8, "применение / х-WWW-форм-urlencoded"); HttpResponseMessage authenticationResponse = ждут authenticationClient. SendAsync (authenticationRequestMessage); Строка JSON = ждут authenticationResponse.Content.ReadAsStringAsync (); AuthenticationTokenClass жетоны = JSON.Deserialize (JSON); //Console.WriteLine(tokens.access_token); //Console.WriteLine(tokens.token_type); вернуться tokens.access_token; // переменная сериализатору = новый JavaScriptSerializer (); // динамический элемент = serializer.Deserialize (JSON); //Console.WriteLine(json); // возвращает элемент [ "access_token"]; }}} TweetAndLocationController.cs с использованием системы; используя System.Collections.Generic; используя System.Linq; используя system.net; используя System.Net.Http; используя System.Web.Http; используя System.Web.Script.Serialization; используя locationapi.Models; Пространство имен locationapi. Контроллеры {класс TweetAndLocationController общественности: ApiController {публичная строка Get () {вернуть AuthorizeAndGetTweets.whatToName () Результат;. // список List = новый список (); //list.Add("Hello "); //list.Add("World "); // возвращает список; }}} Когда я отладки кода, управление переходит до HttpResponseMessage твиты = ждут httpClient.SendAsync (requestingTweets); в authorizeAndGetTweets.cs я не получаю выход вообще и браузер показывает символ загрузки. Где я буду неправильно. Как я должен это делать? //list.Add("World "); // возвращает список; }}} Когда я отладки кода, управление переходит до HttpResponseMessage твиты = ждут httpClient.SendAsync (requestingTweets); в authorizeAndGetTweets.cs я не получаю выход вообще и браузер показывает символ загрузки. Где я буду неправильно. Как я должен это делать? //list.Add("World "); // возвращает список; }}} Когда я отладки кода, управление переходит до HttpResponseMessage твиты = ждут httpClient.SendAsync (requestingTweets); в authorizeAndGetTweets.cs я не получаю выход вообще и браузер показывает символ загрузки. Где я буду неправильно. Как я должен это делать?
1

голосов
1

ответ
116

Просмотры

Извлечение табличных данных наряду с данными больших двоичных объектов с использованием Web API

Я пытаюсь выборку записей из таблицы базы данных Oracle, используя веб-интерфейс API из матер таблицы страны, имеющие столбцы «COUNTRYNAME», «COUNTRYCODE» и «имидж страны» (BLOB). Я не в состоянии включить столбец блоба наряду с другими данными: Текущий код: // Доступ к данным (Repository) слой для извлечения данных с использованием Dapper общественного переопределения IQueryable GetCountryList () {строка запроса = «выберите COUNTRYNAME, COUNTRYCODE из страны»; connection.Open (); вернуть connection.Query (запрос) .AsQueryable (); } // контроллер Web API общественного IHttpActionResult Получить () {уаг JsonResponse =; вернуться Ok (. GetCountryList () ToList ()); } Ожидаемый результат: Я хочу, чтобы включить столбец CountryImage, который BLOB типа наряду с существующими столбцами (запрос ниже для справки). т.е. "выберите COUNTRYNAME, COUNTRYCODE, CountryImage из страны"; Я буду потреблять эти данные в моем угловом приложении.
Tushar
1

голосов
1

ответ
39

Просмотры

Routes and the dreaded 405

У меня есть простой веб-интерфейс API, который регистрирует на одном маршруте. На данный момент у меня есть два, потому что только один из них делает то, что мне нужно. Мое приложение имеет только один контроллер и один метод Post в этом контроллере. Я зарегистрировал один маршрут, который всегда возвращает 405 (метод не допускается) Эти два маршрут выполнены в RouteConfig.cs: routes.MapHttpRoute (имя: «приложение-событие», routeTemplate: «событие», по умолчанию: новый { контроллер = "Событие"}, обработчик: новый GZipToJsonHandler (GlobalConfiguration.Configuration), ограничения: NULL); routes.MapHttpRoute (название: "DefaultApi", routeTemplate: "API / {контроллер} / {ID}", по умолчанию: новый идентификатор {= RouteParameter.Optional}); Метод контроллера, по сути это ... класс EventsController общественности: ApiController {общественного EventsController () {_sender = новый EventHubSender (); } Общественного асинхронных задач сообщения (HttpRequestMessage requestMessage) {// делать прикольные вещи здесь ... вернуться новый HttpResponseMessage (HttpStatusCode.OK); }} Если я настроить только первый маршрут и отправить запрос на HTTP: // devbox / события я получаю 405. Однако, если добавить второй, по умолчанию, маршрут и отправить к HTTP: // devbox / API / события я вернусь мой ожидал 201. с обоих маршрутов, настроенных в то же время, по той же схеме, маршрут явно привязан к контроллер получает запрос на запись и не с 405, а другой URL будет работать. Я долго смотрит вокруг, прежде чем уступающий, чтобы задать вопрос. Большинство вещей, которые я читал много общего с Webdav, и я думаю, что я следовал каждому из них, чтобы решить эту проблему.
bravelad
1

голосов
1

ответ
458

Просмотры

ASP.NET core 2.0 facebook JWT authentication

Я пытаюсь сделать проверку подлинности JWT Facebook, с ядром ASP.NET 2.0. ConfigureServices: services.AddAuthentication (JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer (опции => {options.TokenValidationParameters = новые TokenValidationParameters {ValidateIssuer = верно, ValidateAudience = верно, ValidateLifetime = верно, ValidateIssuerSigningKey = истина, ValidIssuer = Configuration [ "Аутентификация: JWT: Эмитент "], ValidAudience = Configuration [" Аутентификация: JWT: Эмитент "], IssuerSigningKey = новые SymmetricSecurityKey (Encoding.UTF8.GetBytes (Configuration [" Аутентификация: JWT: Ключ» ]))}; }) .AddFacebook (facebookOptions => {facebookOptions.AppId = Конфигурация [ "Проверка подлинности: Facebook: AppId"]; facebookOptions.AppSecret = Конфигурация [ "Проверка подлинности: Facebook: AppSecret"]; facebookOptions.CallbackPath = Конфигурация [ "Проверка подлинности: Facebook: CallBackURL "];}); Настройка app.UseAuthentication (); Когда я пытаюсь сделать вход в Facebook для входа обратного вызова есть ошибка: InvalidOperationException: Нет IAuthenticationSignInHandler настроен для обработки входа для схемы: Знаменосец Когда я делаю проверку подлинность Cookie, без JWT работает. Есть идеи? AddFacebook (facebookOptions => {facebookOptions.AppId = Конфигурация [ "Проверка подлинности: Facebook: AppId"]; facebookOptions.AppSecret = Конфигурация [ "Проверка подлинности: Facebook: AppSecret"]; facebookOptions.CallbackPath = Конфигурация [ "Проверка подлинности: Facebook: CallBackURL"] ;}); Настройка app.UseAuthentication (); Когда я пытаюсь сделать вход в Facebook для входа обратного вызова есть ошибка: InvalidOperationException: Нет IAuthenticationSignInHandler настроен для обработки входа для схемы: Знаменосец Когда я делаю проверку подлинность Cookie, без JWT работает. Есть идеи? AddFacebook (facebookOptions => {facebookOptions.AppId = Конфигурация [ "Проверка подлинности: Facebook: AppId"]; facebookOptions.AppSecret = Конфигурация [ "Проверка подлинности: Facebook: AppSecret"]; facebookOptions.CallbackPath = Конфигурация [ "Проверка подлинности: Facebook: CallBackURL"] ;}); Настройка app.UseAuthentication (); Когда я пытаюсь сделать вход в Facebook для входа обратного вызова есть ошибка: InvalidOperationException: Нет IAuthenticationSignInHandler настроен для обработки входа для схемы: Знаменосец Когда я делаю проверку подлинность Cookie, без JWT работает. Есть идеи? facebookOptions.AppSecret = Конфигурация [ "Проверка подлинности: Facebook: AppSecret"]; facebookOptions.CallbackPath = Конфигурация [ "Проверка подлинности: Facebook: CallBackURL"]; }); Настройка app.UseAuthentication (); Когда я пытаюсь сделать вход в Facebook для входа обратного вызова есть ошибка: InvalidOperationException: Нет IAuthenticationSignInHandler настроен для обработки входа для схемы: Знаменосец Когда я делаю проверку подлинность Cookie, без JWT работает. Есть идеи? facebookOptions.AppSecret = Конфигурация [ "Проверка подлинности: Facebook: AppSecret"]; facebookOptions.CallbackPath = Конфигурация [ "Проверка подлинности: Facebook: CallBackURL"]; }); Настройка app.UseAuthentication (); Когда я пытаюсь сделать вход в Facebook для входа обратного вызова есть ошибка: InvalidOperationException: Нет IAuthenticationSignInHandler настроен для обработки входа для схемы: Знаменосец Когда я делаю проверку подлинность Cookie, без JWT работает. Есть идеи? в Facebook вход обратного вызова есть ошибка: InvalidOperationException: Нет IAuthenticationSignInHandler настроен для обработки входа для схемы: Знаменосец Когда я делаю проверку подлинность Cookie, без JWT работает. Есть идеи? в Facebook вход обратного вызова есть ошибка: InvalidOperationException: Нет IAuthenticationSignInHandler настроен для обработки входа для схемы: Знаменосец Когда я делаю проверку подлинность Cookie, без JWT работает. Есть идеи?
user3411848
1

голосов
0

ответ
54

Просмотры

Office365 SSO для приложений WebAPI основе

Я занимаюсь разработкой приложений на основе WebAPI с проверкой подлинности маркеров на основе реализованного и использование angularJs 1,6 в качестве переднего конца. Требование, чтобы обеспечить единый вход для Office365 без навигации пользователя майкрософт страницы входа согласия, когда пользователь в входе в приложение, используя страницу входа приборной панели. В настоящее время я не могу найти способ сделать это. Просьба направлять меня в выполнении этого. В моей приборной панели я предоставлю ссылку на любой майкрософт службы. Скажем мировоззрению. Когда пользователь нажимает на ссылку она откроется в новой вкладке. Я был в состоянии выполнить это с помощью SMART LINKS. Но теперь пользователю нужно снова проверить подлинность на странице входа в систему Microsoft. Пожалуйста, помогите мне в решении SSO для этого.
Talha Junaid
1

голосов
0

ответ
32

Просмотры

Optimize fluent validation code from duplicating to one extension method

public interface IAdditional { int Id { get; set; } string Version { get; set; } } public interface IUser { string Name { get; set; } } // dto public class CreateUser : IUser { public string Name { get; set; } } // dto public class UpdateUser : IAdditional, IUser { int Id { get; set; } string Version { get; set; } public string Name { get; set; } } internal class UserValidator : AbstractValidator { public UserValidator() { When(u => u is IAdditional, () => { RuleFor(u => (u as IAdditional).Id) .GreaterThan(0); RuleFor(u => (u as IAdditional).Version) .NotEmpty(); }); RuleFor(u => u.Name).NotEmpty(); } } So, how I could optimize this code part: When(u => u is IAdditional, () => { RuleFor(u => (u as IAdditional).Id) .GreaterThan(0); RuleFor(u => (u as IAdditional).Version) .NotEmpty(); }); This code part i use in every controller. Every controller has f-validator and in every f-validator I use this code lines. It should be great to move it to separate class and reuse it in every f-validator. Tried look to extension method, but I can't understand how it to use make working
Gyciauskas
1

голосов
0

ответ
267

Просмотры

JsonConvert.DeserializeObject () не может разобрать Swagger типа ответа, который имеет ссылочное типизированное свойство

У меня есть действие WebAPI, который возвращает сильно типизированный объект, имеющий этот класс: MyResponse общественного класса {общественных строковое сообщение {получить; внутреннее множество; } Общественного ChildObject ChildObject {получить; внутреннее множество; }} Swashbuckle генерирует документ в формате JSON Swagger (отредактированный для краткости): { "чванство": "2.0", "информация": { "вариант": "v1", "название": "empApi"}, "хозяин": " локальный: 51299" , "схемы": [ "HTTP"], "пути": { "/ апи / v1 / MyAction": { "пост": {... "ответы": { "200": { «описание «: "OK", "схема": { "$ исх": "# / определения / MyResponse" }}}}}}, "Определения": { "MyResponse": { "типа": "объект", "Свойства": { "Сообщение": { "типа": "строка", "доступен только для чтения": истинный} "ChildObject": { "$ исх": "# / определения / ChildObject", "доступен только для чтения": истинно}}}, "ChildObject": { "Тип": "объект", "свойства": {...} }}} Этот код парсинг работал хорошо, пока я не добавил ChildObject: публичная статическую SwaggerDocument разобрать выражение (строка ЦСИ) {настройки Var = новые JsonSerializerSettings (); вар схемы = новый SchemaResolver (); // Реализует IReferenceResolver, поддерживает словарь settings.ReferenceResolverProvider = () => схемы; вар чванство = JObject.Parse (SRC); .. Вар typesRoot = swagger.Properties (), где (р => p.Name == "Определения") FirstOrDefault (); если (typesRoot! = NULL) {Еогеасп (вар я в typesRoot.Values ​​()) {schemas.AddReference (нуль, "# /" + i.Path.Replace ( "", "/"), JsonConvert.DeserializeObject ( (я, как JProperty) .Value.ToString (), настройки)); }} Вернуть JsonConvert.DeserializeObject (ЦСИ, настройки); } Исключение: Дополнительный контент найден в JSON эталонного объекта. Ссылка объект JSON должен иметь только свойство $ реф. Путь 'properties.ChildObject.readOnly', строка _ _ позиция. в Newtonsoft.Json.Serialization.JsonSerializerInternalReader. ReadMetadataProperties (считыватель JsonReader, тип и OBJECTTYPE, JsonContract и контракт, член JsonProperty, JsonContainerContract containerContract, JsonProperty containerMember, объект existingValue, Object & NEWVALUE, String & ID) Есть ли способ, чтобы сделать JsonConvert справиться с этим, не делая сеттер общественности? (Как я гарантировать, что я могу справиться с чванством документы для WebApis Я не могу изменить?)
Emyr
1

голосов
1

ответ
768

Просмотры

Отл .: Не удалось загрузить файл или сборку «Newtonsoft.Json, Version = 6.0.0.0, культура = нейтральной, PublicKeyToken = 30ad4fe6b2a6aeed» или один из его зависимостей

Я использую Microsoft.AspNet.WebApi.Client (версия 5.2.4). Также Newtonsoft.Json упоминается в моем проекте (версия 11.0.2). Я пытаюсь получить результаты вызова веб-сервиса следующим образом: ... используя (вар клиент = новый HttpClient ()) {ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; client.DefaultRequestHeaders.Accept.Clear (); client.DefaultRequestHeaders.Accept.Add (новый MediaTypeWithQualityHeaderValue ( "применение / JSON")); Содержание переменная = новый StringContent ($ "grant_type = refresh_token & client_id = sfd34tgregge & client_secret = 345534535 & refresh_token = {refreshToken}", Encoding.UTF8, "применение / х-WWW-форм-urlencoded"); ответ вар = ждут client.PostAsync (URL, содержание); если (ответ. IsSuccessStatusCode) {вар getAccessTokenResult = ждут response.Content.ReadAsAsync (); ...}} ... Я могу выполнить этот код без каких-либо проблем, когда я ссылаться на этот DLL из C # приложения. Когда я называю тот же метод, с помощью COM я получаю следующее сообщение об ошибке: Исключение: Не удалось загрузить файл или сборку «Newtonsoft.Json, Version = 6.0.0.0, культура = нейтральной, PublicKeyToken = 30ad4fe6b2a6aeed» или один из его зависимостей. Система не может найти указанный файл. Мы украсили класс, который доступен через COM следующим образом: [ProgId ( «MyDLL»)] [ClassInterface (ClassInterfaceType.AutoDual)] общественный класс MyDLL: IMyDll {...} Мы также установили следующее AssemblyInfo.cs : [сборка: ComVisible (истина)] app.config содержит следующее: Почему я получаю сообщение об ошибке? Почему это попытка использовать версии 6.0.0.0 от Newtonsoft.Json? Почему это работает при вызове его из приложения .NET, но не при вызове ее через COM? Что еще я могу проверить?
Alexander
1

голосов
1

ответ
42

Просмотры

Navigation Property not lazy loaded EF6 Code First

Я мытая веб и переполнение стека для ответа на мою проблему, но у меня нет никакой удачи. В принципе у меня есть модель, которая имеет 2 ссылки одного и того же объекта и другие объекты, а также. Когда я вставляю запись в модель, свойства не загружается, следовательно, я попробовал функцию Context.Attach ни к удаче. Я также попытался запрашивая существующую запись и объект еще не присоединять Вот моя модель [DatabaseGenerated (DatabaseGeneratedOption.Identity)] [Key] публичное Guid TripID {получить; задавать; } [Требуется] [Диапазон (1, 999999, ErrorMessage = «Общее расстояние может быть только положительное число не равно нулю»)] общественность дважды TotalDistance {получить; задавать; } [Требуется] общественности двойной AmountDue {получить; задавать; } [Требуется] общественный TripPaymentType PaymentType {получить; задавать; } [Требуется] общественный TripStatus CurrentStatus {получить; задавать; } [ForeignKey ( "TripTypeId")] общественность TripType TripType {получить; задавать; } [Требуется] общественный Guid TripTypeId {получить; задавать; } [Требуется] общественный DateTime TransactionDate {получить; задавать; } [Требуется] общественный Guid CustomerID {получить; задавать; } [ForeignKey ( "CustomerID")] общественность UserInfo клиентов {получить; задавать; } Общественного Guid? DriverID {получить; задавать; } [ForeignKey ( "DriverID")] общественность UserInfo Driver {получить; задавать; } Конфигурация для одного объекта множественного опорного modelBuilder.Entity () .HasRequired (й => th.Customer) .WithMany () .WillCascadeOnDelete (ложь); modelBuilder.Entity () .HasOptional (й => th.Driver) .WithMany () .WillCascadeOnDelete (ложь); Любая помощь будет принята с благодарностью } [ForeignKey ( "TripTypeId")] общественность TripType TripType {получить; задавать; } [Требуется] общественный Guid TripTypeId {получить; задавать; } [Требуется] общественный DateTime TransactionDate {получить; задавать; } [Требуется] общественный Guid CustomerID {получить; задавать; } [ForeignKey ( "CustomerID")] общественность UserInfo клиентов {получить; задавать; } Общественного Guid? DriverID {получить; задавать; } [ForeignKey ( "DriverID")] общественность UserInfo Driver {получить; задавать; } Конфигурация для одного объекта множественного опорного modelBuilder.Entity () .HasRequired (й => th.Customer) .WithMany () .WillCascadeOnDelete (ложь); modelBuilder.Entity () .HasOptional (й => th.Driver) .WithMany () .WillCascadeOnDelete (ложь); Любая помощь будет принята с благодарностью } [ForeignKey ( "TripTypeId")] общественность TripType TripType {получить; задавать; } [Требуется] общественный Guid TripTypeId {получить; задавать; } [Требуется] общественный DateTime TransactionDate {получить; задавать; } [Требуется] общественный Guid CustomerID {получить; задавать; } [ForeignKey ( "CustomerID")] общественность UserInfo клиентов {получить; задавать; } Общественного Guid? DriverID {получить; задавать; } [ForeignKey ( "DriverID")] общественность UserInfo Driver {получить; задавать; } Конфигурация для одного объекта множественного опорного modelBuilder.Entity () .HasRequired (й => th.Customer) .WithMany () .WillCascadeOnDelete (ложь); modelBuilder.Entity () .HasOptional (й => th.Driver) .WithMany () .WillCascadeOnDelete (ложь); Любая помощь будет принята с благодарностью )] TripType общественного TripType {получить; задавать; } [Требуется] общественный Guid TripTypeId {получить; задавать; } [Требуется] общественный DateTime TransactionDate {получить; задавать; } [Требуется] общественный Guid CustomerID {получить; задавать; } [ForeignKey ( "CustomerID")] общественность UserInfo клиентов {получить; задавать; } Общественного Guid? DriverID {получить; задавать; } [ForeignKey ( "DriverID")] общественность UserInfo Driver {получить; задавать; } Конфигурация для одного объекта множественного опорного modelBuilder.Entity () .HasRequired (й => th.Customer) .WithMany () .WillCascadeOnDelete (ложь); modelBuilder.Entity () .HasOptional (й => th.Driver) .WithMany () .WillCascadeOnDelete (ложь); Любая помощь будет принята с благодарностью )] TripType общественного TripType {получить; задавать; } [Требуется] общественный Guid TripTypeId {получить; задавать; } [Требуется] общественный DateTime TransactionDate {получить; задавать; } [Требуется] общественный Guid CustomerID {получить; задавать; } [ForeignKey ( "CustomerID")] общественность UserInfo клиентов {получить; задавать; } Общественного Guid? DriverID {получить; задавать; } [ForeignKey ( "DriverID")] общественность UserInfo Driver {получить; задавать; } Конфигурация для одного объекта множественного опорного modelBuilder.Entity () .HasRequired (й => th.Customer) .WithMany () .WillCascadeOnDelete (ложь); modelBuilder.Entity () .HasOptional (й => th.Driver) .WithMany () .WillCascadeOnDelete (ложь); Любая помощь будет принята с благодарностью } [Требуется] общественный Guid TripTypeId {получить; задавать; } [Требуется] общественный DateTime TransactionDate {получить; задавать; } [Требуется] общественный Guid CustomerID {получить; задавать; } [ForeignKey ( "CustomerID")] общественность UserInfo клиентов {получить; задавать; } Общественного Guid? DriverID {получить; задавать; } [ForeignKey ( "DriverID")] общественность UserInfo Driver {получить; задавать; } Конфигурация для одного объекта множественного опорного modelBuilder.Entity () .HasRequired (й => th.Customer) .WithMany () .WillCascadeOnDelete (ложь); modelBuilder.Entity () .HasOptional (й => th.Driver) .WithMany () .WillCascadeOnDelete (ложь); Любая помощь будет принята с благодарностью } [Требуется] общественный Guid TripTypeId {получить; задавать; } [Требуется] общественный DateTime TransactionDate {получить; задавать; } [Требуется] общественный Guid CustomerID {получить; задавать; } [ForeignKey ( "CustomerID")] общественность UserInfo клиентов {получить; задавать; } Общественного Guid? DriverID {получить; задавать; } [ForeignKey ( "DriverID")] общественность UserInfo Driver {получить; задавать; } Конфигурация для одного объекта множественного опорного modelBuilder.Entity () .HasRequired (й => th.Customer) .WithMany () .WillCascadeOnDelete (ложь); modelBuilder.Entity () .HasOptional (й => th.Driver) .WithMany () .WillCascadeOnDelete (ложь); Любая помощь будет принята с благодарностью } [Требуется] общественный Guid CustomerID {получить; задавать; } [ForeignKey ( "CustomerID")] общественность UserInfo клиентов {получить; задавать; } Общественного Guid? DriverID {получить; задавать; } [ForeignKey ( "DriverID")] общественность UserInfo Driver {получить; задавать; } Конфигурация для одного объекта множественного опорного modelBuilder.Entity () .HasRequired (й => th.Customer) .WithMany () .WillCascadeOnDelete (ложь); modelBuilder.Entity () .HasOptional (й => th.Driver) .WithMany () .WillCascadeOnDelete (ложь); Любая помощь будет принята с благодарностью } [Требуется] общественный Guid CustomerID {получить; задавать; } [ForeignKey ( "CustomerID")] общественность UserInfo клиентов {получить; задавать; } Общественного Guid? DriverID {получить; задавать; } [ForeignKey ( "DriverID")] общественность UserInfo Driver {получить; задавать; } Конфигурация для одного объекта множественного опорного modelBuilder.Entity () .HasRequired (й => th.Customer) .WithMany () .WillCascadeOnDelete (ложь); modelBuilder.Entity () .HasOptional (й => th.Driver) .WithMany () .WillCascadeOnDelete (ложь); Любая помощь будет принята с благодарностью )] Общественный драйвер UserInfo {получить; задавать; } Конфигурация для одного объекта множественного опорного modelBuilder.Entity () .HasRequired (й => th.Customer) .WithMany () .WillCascadeOnDelete (ложь); modelBuilder.Entity () .HasOptional (й => th.Driver) .WithMany () .WillCascadeOnDelete (ложь); Любая помощь будет принята с благодарностью )] Общественный драйвер UserInfo {получить; задавать; } Конфигурация для одного объекта множественного опорного modelBuilder.Entity () .HasRequired (й => th.Customer) .WithMany () .WillCascadeOnDelete (ложь); modelBuilder.Entity () .HasOptional (й => th.Driver) .WithMany () .WillCascadeOnDelete (ложь); Любая помощь будет принята с благодарностью
Kaizer69
1

голосов
0

ответ
15

Просмотры

я хочу, чтобы преобразовать свою GridView таблицу в формате PDF

** когда я пытался преобразовать мои данные сетки ракурса в PDF я получил нулевую ссылку исключение сетки просмотр заголовок строку, но данные доступны в сетке view.please помочь мне решить эту ошибку. Я использую ASP.NET Web API в этом .. и я попытался на другой сетке ракурса, чтобы связать data..it показывает ту же ошибку нулевой ссылки исключение, но когда я попытался на прямой кнопку мыши работает fine..only он показывает ошибку когда я пытался на использовании веб-API..please помочь мне решить эту проблему я приложил мое программирование под нагрузкой данных и связать общественное аннулируются GetData () {строка Conn = ConfigurationManager.ConnectionStrings [ «против»] ToString (). SqlConnection кон = новый SqlConnection (Conn); con.Open (); SqlCommand CMD = новый SqlCommand ( "выберите * из апи", кон); SqlDataAdapter да = новый SqlDataAdapter (CMD); DataSet DS = новый набор данных (); da.Fill (DS, "API"); // DataTable ДТ = новый DataTable (); // ДТ = ds.Tables [ "API"]; //da.Fill(dta); GridView2.DataSource = DS; GridView2.DataBind (); } Конвертировать в PDF общественной строки button3_click () {PdfPTable pdfTable = новый PdfPTable (GridView2.HeaderRow.Cells.Count); Еогеасп (TableCell headercell в GridView2.HeaderRow.Cells) {iTextSharp.text.Font шрифта = новый iTextSharp.text.Font (); font.Color = новый Basecolor (GridView2.HeaderRow.ForeColor); PdfPCell pdfcell = новый PdfPCell (новый разговорник (headercell.Text, шрифт)); pdfcell.BackgroundColor = новый Basecolor (GridView2.HeaderStyle.BackColor); pdfTable.AddCell (pdfcell); } Еогеасп (GridViewRow gridviewrow в GridView2.Rows) {Еогеасп (TableCell TableCell в gridviewrow.Cells) {iTextSharp.text.Font шрифта = новый iTextSharp.text.Font (); font.Color = новый Basecolor (GridView2.RowStyle.ForeColor); PdfPCell pdfcell = новый PdfPCell (новая фраза (tablecell.Text)); pdfcell.BackgroundColor = новый Basecolor (GridView2.RowStyle.BackColor); pdfTable.AddCell (pdfcell); }} Документ pdfdoc = новый документ (PageSize.A4, 10f, 10f, 10f, 10f); PdfWriter.GetInstance (pdfdoc, Response.OutputStream); pdfdoc.Open (); pdfdoc.Add (pdfTable); pdfdoc.Close (); Response.ContentType = "применение / PDF"; Response.AppendHeader ( "Content-Disposition", "вложение; имя файла = Employyes.pdf"); Response.Write (pdfdoc); Response.Flush, (); Response.End (); вернуть «успех»; } Вызов функции Ajax $ (документ) .ready (функция () {$ ( "# Button2") нажмите (функция () {Alert ( "Аякса вызов"); $ .ajax ({метод:. "GET", URL: "апи / Сотрудники", CONTENTTYPE: "приложения / JSON; кодировка = UTF-8", Datatype: "JSON", успех: функция (ответ) {Alert ( "успех"); }, Ошибка: функция (Быстродействие) {Alert ( "Ошибка"); }}); }); }); вот мой контроллер класс общественного класса EmployeesController: ApiController {// Успех = новый успех (); BusinessLogicLayer BAL = новый BusinessLogicLayer (); публичная строка Получить (строка имя пользователя, строка пароля) {возвращение bal.login (имя пользователя, пароль); } [System.Web.Mvc.HttpPost] публичная строка POST (строка Firstname, строка фамилия, имя пользователя строка, строка пароля, строка электронной почты) {вернуть bal.Register (имя, фамилия, имя пользователя, пароль, адрес электронной почты); } [System.Web. Http.HttpGet] публичная строка ButtonClick () {// MessageBox.Show ( "пришел"); вернуть bal.ExportConvert (); } Вот мой бизнес-логика методы класса общественного строка ExportConvert () {Успех = новый успех (); вернуть s.Button3_Click (); Registraton успеха Закрыть × $ (документ) .ready (функция () {. $ ( '# LinkClose') нажмите (функция () {$ ( 'divError') скрыть ( 'замирания'),.})}); . $ ( '# Btnlogin') нажмите (функция () {$ .ajax ({URL:.? / API / Сотрудники / имя пользователя = '+ $ ( "# имя пользователя") Вал () + '& пароль =' + $ ( "#password") Val (), метод:. 'Get', CONTENTTYPE: 'применение / JSON', данные: {ID: 1}, тип данных: 'JSON', успех: функция (данные) {console.log (данные); // вар данные = data.d; // предупреждение ( "успех" + данные); Если (данные == 'успех') {window.location = "/success.aspx"; } Еще {Alert ( "Неправильное Имя пользователь и пароль"); } / * Если (данные! = NULL) {$ .each (данные, функция (я, объект) {вар с = новый WorkflowsEntity (данные [я]); // логика self.WorkflowList.push;}); предупреждение ( "успех"); //window.location.href = "/success.html"; } * /}, Ошибка: функция (jqXHR, textStatus, errorThrown) {Alert ( "ООН правильное имя пользователя пароль"); . $ ( '# DivErrorText') текст (jqXHR.responceText); $ ( '# DivError') шоу ( 'замирания'). }}); }); **
ashok
1

голосов
1

ответ
312

Просмотры

AWS .NET Ядро Лямбда - изображение Загрузить Сломанный

Я нахожусь в процессе создания Web API с AWS Lambda с использованием .NET Core. Я столкнулся с проблемой, когда кусок кода ниже работы, как и ожидалось на моей машине Windows, (ECHO изображение обратно), но при развертывании на AWS Lambda, возвращенное изображение нарушается. После дальнейшего исследования, размер отражаемых обратно файла почти в два раза размер отправки файла при развертывании на AWS? [HttpPost] общественности асинхронной Task Post (IFormFile файл) {используя (вар tmpStream = новый MemoryStream ()) {ждут file.CopyToAsync (tmpStream); вар FileExtension = Path.GetExtension (file.FileName); вернуть файл (tmpStream.ToArray (), file.ContentType); }} Я пропускаю некоторые конфигурации или с видом на что-то? AWS шлюз ?? (Я тестирую вопрос через Postman)
SOK
1

голосов
2

ответ
339

Просмотры

ASP.NET Web API Global Обработка исключений - Трассировка стека читаемость

I'm working on an ASP.Net Web API Project (.Net Framework 4.7.1) I'm trying to use ExceptionLogger to handle exceptions globally and log them My implementation looks like this : public class MyExceptionLogger : ExceptionLogger { public override void Log(ExceptionLoggerContext context) { Console.Error.WriteLine(context.Exception); } } I subscribed it into the WebApiConfig.cs like this : public static void Register(HttpConfiguration config) { // Configuration et services API Web config.Services.Add(typeof(IExceptionLogger), new MyExceptionLogger()); [...] } It catches well the uncaught exceptions from the controllers but the stack trace seems too verbose : at WebApplication.Controllers.ValuesController.Get() in c:\users\ts-sylvain.pajaud\source\repos\WebApplication\WebApplication\Controllers\ValuesController.cs:line 15 at lambda_method(Closure , Object , Object[] ) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.c__DisplayClass10.b__9(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Dispatcher.HttpControllerDispatcher.d__1.MoveNext() The part from "--- End of stack trace from previous location where exception was thrown ---" makes the stack trace heavy and not easilly readable It seems to be related to some async code, but my controller does not have any async code : public class ValuesController : ApiController { // GET api/values public IEnumerable Get() { throw new Exception("Test"); return new string[] { "value1", "value2" }; } } Is there any way to have a "more readable" stack trace ? I checked this thread but none of the explained solutions worked on my project : ExceptionFilter stack trace in synchronous action scenario
Sylvain
1

голосов
1

ответ
38

Просмотры

angularjs WebAPI signalR Chatbox как bookmyshow

я нужен ящик живого чата для моего приложения. я должен использовать для клиентов. и она должна содержать автоматический ответ на некоторые предопределенные вопросы. Я использую angularjs и ASP.NET WebAPI. пожалуйста, помогите мне.
kumar
1

голосов
0

ответ
53

Просмотры

WebAPI принимать только 4079 символов в теле POST

Я разработки мобильных приложений Ионные 3 и с помощью ASP.NET REST WebAPI 2, как мой задний конец. Я пытался передать строку base64 (около 150Kb большого enocoded PNG изображения) к одному из моих методов WebAPI без какого-либо успеха за последнюю пару дней. Мой API метод вызова, что я звоню в моей WebAPI Проблема заключается в том, что WebAPI, кажется, не получают никаких значений, как показано здесь, я посылаю мои данные с этих HEADERS При дальнейшем осмотре я заметил следующее. Я перехватил апи вызов Почтальон и обнаружил, что WebAPI получает данные, но обрезает данные в 4079th характера, как показано здесь. Так как WebAPI кажется, вырезать строку JSON в 4079th характера, сам JSON не является полным, который (я предполагаю, что) является причиной того, почему WebAPI может» т прочитать его, а также, почему значения пусты при отладке метод WebAPI в Visual Studio. Вот еще одна интересная вещь. В инструментах развития Chrome в разделе Network я могу видеть вызов API со всей дополнительной информацией. Chrome также показывает полную строку base64, как показано здесь. Кто-нибудь есть какие-либо идеи, что здесь происходит? Кто-нибудь еще испытал подобные проблемы раньше? UPDATE 1: Я просто добавил это к моему Web.config, как @evayly предложил. Я также попытался регулировать следующие значения: maxAllowedContentLength maxRequestLength Сеть САШ: MaxJsonDeserializerMembers, но это не решило проблему. UPDATE 2 Другая часть интересной информации: Если я вручную редактировать перехваченное сообщение в Почтальон, добавив закрывающие теги JSON - "} и отправить его, метод считывает данные без каких-либо проблем.
Aljosa
1

голосов
2

ответ
169

Просмотры

пользовательские аутентификации .net идентичности

У меня есть веб-API, который используется веб-приложения и мобильные приложения. В настоящее время он использует стандартный подход имя пользователя и пароль входа в систему. Для простоты мы должны отправить пользователю шестизначный код с помощью SMS; в сочетании с там номер телефона, этот код будет предоставлять им доступ к API. Мой вопрос: Будет ли возможность генерировать шесть цифр и позволяют пользователям войти в систему с помощью комбинации этого кода и свой номер телефона? Я смотрел на возможность просто добавить его в заголовки запроса и затем обработать это в поставщике аутентификации, но я не уверен, если есть лучшие практики я должен следовать здесь. Безопасность имеет большое значение, конечно. Я мог бы просто проверить заголовки в поставщике и затем код действовать соответствующим образом. Я искал другие примеры, но ничего не нашел, так что это скорее вопрос для руководства и лучший подход. Код будет иметь один день истечения срока действия и храниться в базе данных после хэшируются. Опять же, любые предложения будут оценивать.
Tony_89
1

голосов
2

ответ
1.3k

Просмотры

POST works in Postman but not in browser

У меня есть это в vuejs с использованием AXIOS AXIOS ({метод: 'пост', URL: 'HTTP: // локальный: 64427 / API / Аутентифицировать / лексем', заголовки: { 'Content-Type': 'приложение / JSon'}, данные: {четырехъядерный: this.quad, пароль: this.password}}) .then (ответ => {console.log (response.header.token);}) Когда я отправляю с помощью конечной точки в почтальона, он работает HTTP: // локальный: 64427 / API / Аутентифицировать / Токен четверной = YGOP & пароль = P @ ssw0rd Но я могу 404 код ошибки, когда я отправляю с помощью AXIOS?. Вот бэкенд [HttpPost] [ActionName ( "Знак")] [BasicAuthentication] общественного HttpResponseMessage Войти (строка четырехъядерный, строка пароля) {BOOL isAuthenticated = EmployeeSecurity.Login (четырехъядерный, пароль); если (isAuthenticated) {если (Thread.CurrentPrincipal! = NULL && Thread.CurrentPrincipal.Identity.IsAuthenticated) {вар basicAuthenticationIdentity = Thread.CurrentPrincipal.Identity; если (basicAuthenticationIdentity! = NULL) {вар имя пользователя = basicAuthenticationIdentity.Name; вернуться GetAuthToken (имя пользователя); } Возвращать нуль; }} Возвращать нуль; }
Aatish Kumar
1

голосов
1

ответ
54

Просмотры

Asp.Net Core 2, Entity Framework и услуги. Странное поведение

Я добавляю новый метод в сервис, который уже работает. Этот новый метод используются в работе замедленного воспламенения. Это, как я добавить его в метод Configure в Startup.cs // Создание ежедневных задач RecurringJob.AddOrUpdate (х => x.CreateRecurringTasks (), cron.daily (0)); И это конструктор службы. Обратите внимание, что я создаю контекст БДА в начале, так что я не имею проблем транзакций при использовании его внутри контроллера. общественный TaskService (IMapper картостроитель, INotificationService notificationService, конфигурации наследуют IConfiguration) {вар выбирает = новый DbContextOptionsBuilder (); opts.UseSqlServer (configuration.GetConnectionString ( "DefaultConnection")); _dbContext = новые ProjectDbContext (opts.Options); _configuration = конфигурация; _mapper = преобразователь; _notificationService = notificationService; } Моя проблема заключается в том, что метод ниже не добавит строку в базе данных. аннулированию LogRepeatedTask (длинный copiedTaskId, длинные originalTaskId) {_dbContext.TaskRepeatLogs.Add (новый Data.Models.TaskRepeatLog {CopiedTaskId = copiedTaskId, OriginalTaskId = originalTaskId, UtcDate = DateTime.UtcNow}); _dbContext.SaveChanges (); } Это модель. Как вы можете видеть, что это довольно просто: общественный класс TaskRepeatLog {общественность долго Id {получить; задавать; } Общественность долго OriginalTaskId {получить; задавать; } Общественность долго CopiedTaskId {получить; задавать; } Общественного DateTime UtcDate {получить; задавать; }} И это DbSet в ProjectDbContext: общественный DbSet TaskRepeatLogs {получить; задавать; } Все, кажется, довольно просто для меня, но я не могу понять, почему этот метод не работает. Даже выбор на этой DbSet, похоже, не работать должным образом, и я не понимаю, что я сделал неправильно. Вы можете мне помочь? Спасибо
André Luiz
1

голосов
0

ответ
37

Просмотры

WebAPI маркер авторизации иногда не работает

Я столкнулся вопрос, который я создал обеспеченный WebAPI и его потребляемую мобильным приложением я создал маркер, когда пользователь Войти затем использовал этот маркер, чтобы иметь право использовал свои защищенные интерфейсы API, иногда сгенерированного токена возврата 401 несанкционированном с следующим сообщением: { «Сообщение» : «Разрешение было отказано в этой просьбе.» } Однако, когда я использовал тот же маркер во второй раз его успешно работает через Почтальон / мобильный телефон. Есть ли у вас какие-либо подсказки?
Mohammed Thabet
1

голосов
0

ответ
56

Просмотры

Знаменосец претензии Идентичность не установлена ​​для метода GET, но устанавливается для методов POST

Я использую ASP.NET Web API 2 (.net 4.7). Я пытаюсь получить личность предъявителя претензии (текущий пользователь) в контроллере для запроса GET, но только личность, которая есть окна идентичности, а не личность предъявителя претензии. Когда я делаю запрос POST идентификатор претензии на предъявителя предоставляется. Каким образом это происходит, и есть ли способ, чтобы получить требование идентичности однонаправленного быть установлена ​​для запроса GET? Есть ли настройки в моем запуске опциях OAuth (класс), который я должен установить? Примечание: тот же результат бывает и для «RequestContext.Principal» и «User.Identity» Startup.Auth.cs общественного частичного класса Startup {общественного статического OAuthAuthorizationServerOptions OAuthOptions {получить; частный набор; } Статическая Startup () {IClientService clientService = / * Newing вверх обслуживание * / OAuthOptions = новые OAuthAuthorizationServerOptions {TokenEndpointPath = новый PathString ( "/ маркер"), Provider = новый OAuthAppProvider (clientService), AccessTokenExpireTimeSpan = TimeSpan.FromDays (20), AllowInsecureHttp = истина}; } Общественного недействительными ConfigureAuth (IAppBuilder приложение) {app.UseOAuthBearerTokens (OAuthOptions); }} Auth Provider общественного класса OAuthAppProvider: OAuthAuthorizationServerProvider {частное IClientService _clientService; общественного OAuthAppProvider (IClientService clientService) {_clientService = clientService; } Еще {context.SetError ( "invalid_grant", "Ошибка при условии имя пользователя или пароль."); }}); } Общественного переопределение Задачи ValidateClientAuthentication (контекст OAuthValidateClientAuthenticationContext) {если (context.ClientId == NULL) {context.Validated (); } Вернуть Task.FromResult (NULL); }}
Logan Talbot
1

голосов
1

ответ
84

Просмотры

Access custom attributes of .NET class inside custom json converter

In my project, I have written a custom json converter to trim the white-spaces present in the string property. Here is an example of the typical class we will use, public class Candidate { public string CandidateName { get; set; } } Here is my custom json converter public class StringSanitizingConverter : JsonConverter { public override bool CanConvert(Type objectType) { return objectType == typeof(string); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue , JsonSerializer serializer) { if (reader.TokenType == JsonToken.String) if (reader.Value != null) { string sanitizedString = (reader.Value as string).Trim(); if (StringSanitizeOptions.HasFlag(StringSanitizeOptions.ToLowerCase)) sanitizedString = sanitizedString.ToLowerInvariant(); return sanitizedString; } return reader.Value; } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { var text = (string)value; if (text == null) writer.WriteNull(); else writer.WriteValue(text.Trim()); } } With my custom converter I am now able to format the string by trimming any white-spaces present sent to the action methods using my 'Candidate' as one of its parameter. public void Post(ComplexType complexTypeParameter){ } Everything worked well so far. I later wanted to enhance this json converter to format the string properties based on the attributes set to the string property in the Candidate class. for example, assume I have written my candidate class like this, public class Candidate { [StringSanitizingOptions(Option.ToLowerCase)] public string CandidateName { get; set; } } And if I wanted to format the string properties of a class based on the custom attribute configuration inside the json converter , I am not able to access this custom attribute and its configuration inside the ReadJson method of the custom converter. Here is what I have tried so far but with no luck, Not present in the CustomAttributes property of the objectType parameter sent to the ReadJson() method. Was trying to see if I could extract the parent class of the property inside the ReadJson() method, so that I could apply reflection on the class to extract the custom attributes given to any of its property,but I could not extract that too.
dks
1

голосов
2

ответ
58

Просмотры

Мой Sql Entity Framework не поддерживает против 2015

Im пытается подключиться Моим SQL Server для ASP.Net Web API с помощью DATA Entity Модели Когда им добавления новой БД Entity Model Этих Показать ошибки в этом время установки. Но я уже установлен EF-Там есть Упоминание в Референция Im помощью Visual Studio 2015 .NET Framework 4.6.1 .NET Framework Entity 6.1.3 MySql данных Entity 6.8.8 MySql данные 8,011 Web API / MVC
Shawty
1

голосов
1

ответ
221

Просмотры

возникли проблемы с доступом к развязности в Web API на удаленных среды?

Я настроил Swagger для моего Web API 2.2 приложения и загружает локально, но я получаю ошибку CORS при попытке доступа к нему на удаленном сервере. Кроме того, чтобы добраться до страницы развязности, я должен быть очень четко с URL. Например: https://example.com/swagger/ui/index В противоположность: example.com/swagger/ Я думаю, что я встретил несколько аналогичный вопрос о предыдущем проекте, где я должен был обеспечить полный явный URL, как показано в мой первый пример, но на этом предыдущем проекте, используя длинную форму URL отображается на странице рабочего чванства, как ожидалось. Является ли это из-за HTTPS конфигурации? Есть специальная настройка развязности, которая может быть настроена так, чтобы короткий URL в среде HTTPS? На удаленных серверах появляется следующее сообщение об ошибке, которое появляется четко указывает на ошибку CORS: «Не удается прочитать с сервера.
user9393635
1

голосов
0

ответ
23

Просмотры

Отправить имена столбцов от клиента к серверу для сортировки данных, но клиент имеет данные регистра верблюдов, но сервер долженного случай данные Pascal

Я должен отправить имена столбцов от клиента к серверу для сортировки данных в таблице данных, но клиент имеет данные регистра верблюдов и сервер должен Паскаль данные регистра как столбцы базов данных в случае паскаль. Я могу либо обрабатывать данные на стороне клиента перед отправкой или сделать это на заднем конце. Каков наилучший подход к решению ситуации ?.
Yeshwant Parab
1

голосов
0

ответ
32

Просмотры

Зависимость Разрешение в Swagger Startup

Я пытаюсь решить объект, который реализует интерфейс IMyConfiguration при запуске Swagger. Это можно сделать с помощью следующего фрагмента кода: общественного класса SwaggerConfig {государственной статической силы Register () {вар MyConfig = GlobalConfiguration.Configuration.DependencyResolver.GetService (TypeOf (IMyConfiguration)); GlobalConfiguration.Configuration.EnableSwagger (с => {...}); }} Конечно, вы должны убедиться, что контейнер инициализируется перед Кураж регистрирует себя для этой работы. Я задаюсь вопросом, есть ли возможный способ сделать разрешение зависимостей другим способом, или что я буду жить с этим.
Chrono

Просмотр дополнительных вопросов