Я написал минимальный API в C#, работающем на .net 8. Предполагается, что он должен вернуть одну запись и обновить таблицу в нашей базе данных, указывая на то, что запись была обработана. Характер потребляющего приложения заключается в том, что я могу отправлять только одну запись за раз. Чтобы все было просто, я сначала не упоминал в своем первоначальном вопросе, что использую задачу сценария в SSI, чтобы назвать сторонним API, который запускает рабочий процесс в приложении по потреблению. Я использовал SSIS, чтобы я мог легко пройти через свои данные и вызвать API стороннего API для каждой записи. Сторонний рабочий процесс использует мой API для запроса нашего DB, но позволяет только одну запись за раз. Это все работает и успешно проверяется в почте, чтобы получить первую запись, возвращенную. Когда я запускаю свои процессы базы данных отдельно, которые упоминаются в коде API, возвращаются правильные данные, что заставляет меня полагать, что данные где -то кэшируются. SSIS проходит через записи в моей базе данных, но я думаю, что кэширование где-то происходит, так что оно не обновляет данные. Заголовки "Прагма. Я не думаю, что проблема кэширования в IIS, так что, вероятно, это в моем коде C#.
Я пробовал ответный разбор и outputCache промежуточное программное обеспечение в моем коде C#, без удачи. Моей последней попыткой было использование службы addmvc с nostore , установленным в True, и местоположение, установленное в responsecachelocation.none . Это тоже не работает. Как отключить кэширование в моем API?
Вот моя программа.
Я написал минимальный API в C#, работающем на .net 8. Предполагается, что он должен вернуть одну запись и обновить таблицу в нашей базе данных, указывая на то, что запись была обработана. Характер потребляющего приложения заключается в том, что я могу отправлять только одну запись за раз. Чтобы все было просто, я сначала не упоминал в своем первоначальном вопросе, что использую задачу сценария в SSI, чтобы назвать сторонним API, который запускает рабочий процесс в приложении по потреблению. Я использовал SSIS, чтобы я мог легко пройти через свои данные и вызвать API стороннего API для каждой записи. Сторонний рабочий процесс использует мой API для запроса нашего DB, но позволяет только одну запись за раз. Это все работает и успешно проверяется в почте, чтобы получить первую запись, возвращенную. Когда я запускаю свои процессы базы данных отдельно, которые упоминаются в коде API, возвращаются правильные данные, что заставляет меня полагать, что данные где -то кэшируются. SSIS проходит через записи в моей базе данных, но я думаю, что кэширование где-то происходит, так что оно не обновляет данные. Заголовки "Прагма. Я не думаю, что проблема кэширования в IIS, так что, вероятно, это в моем коде C#. Я пробовал ответный разбор и outputCache промежуточное программное обеспечение в моем коде C#, без удачи. Моей последней попыткой было использование службы addmvc с nostore , установленным в True, и местоположение, установленное в responsecachelocation.none . Это тоже не работает. Как отключить кэширование в моем API? Вот моя программа.[code]using TalkDeskAPI_WithReply; using Microsoft.AspNetCore.Mvc; using Microsoft.Data.SqlClient; using System.Data;
var builder = WebApplication.CreateBuilder(args); builder.Services.AddAuthorization();
// Get Contact Item app.MapGet("/api/Contact", async () => result).CacheOutput (o => { o.Expire(TimeSpan.FromMilliseconds(1)); o.NoCache(); });
app.Run(); } < /code> Вот мой код задачи сценария SSIS C#, который вызывает сторонний API, который запускает рабочий процесс, который запрашивает наш DB через мой API (код, указанный выше). Этот код работает, но был запрошен MJWills в комментариях: < /p> #region Namespaces using Newtonsoft.Json; using System; using System.Threading.Tasks; using System.Net.Http; using System.Net; using System.Collections.Generic; #endregion
namespace ST_5c51b49b0eb04bbaa529180a116d1432 { [Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute] public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase {
var client = new HttpClient(); var request = new HttpRequestMessage(HttpMethod.Post, "https://api.talkdeskapp.com/flows/xxxxxxxxxxxxxx/interactions"); request.Headers.Add("Authorization", "Bearer " + Auth); var content = new StringContent("{}", null, "application/json"); request.Content = content; var response = await client.SendAsync(request); Console.WriteLine(await response.Content.ReadAsStringAsync());
var authenticationString = $"{clientId}:{clientSecret}"; var base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(authenticationString));
var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/oauth/token"); requestMessage.Headers.Add("Authorization","Basic " + base64EncodedAuthenticationString); requestMessage.Content = content;