pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

等待殺死進程

Await kills process(等待殺死進程)
本文介紹了等待殺死進程的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

限時送ChatGPT賬號..

我正在嘗試連接到 Azure AD,并且正在使用此代碼.

試試{var clientCredential = new ClientCredential(_clientId, _clientSecret);var authContext = new AuthenticationContext(AuthUri + _tenant);var authResult = 等待 authContext.AcquireTokenAsync(GraphUri,clientCredential);var authString = authResult.CreateAuthorizationHeader();var client = new HttpClient();client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));var request = 新的 HttpRequestMessage{方法 = HttpMethod.Get,RequestUri = _requestUri,};request.Headers.Add("授權", authString);HttpResponseMessage 響應 = 空;等待 client.SendAsync(request).ContinueWith(taskWithMessage =>{響應 = taskWithMessage.Result;});返回等待響應.Content.ReadAsStringAsync();}捕捉(例外前){Console.WriteLine(ex);}

我不明白的大問題是,當執行到達第一個 await (var authResult = await authContext.AcquireTokenAsync(GraphUri,clientCredential);) 時,進程被簡單地殺死了.沒有拋出異常,什么都沒有.

如果我用

替換該行

var authResult = authContext.AcquireTokenAsync(GraphUri,clientCredential);var authString = authResult.Result.CreateAuthorizationHeader();

執行一直持續到 await client.SendAsync(request).ContinueWith(taskWithMessage... 進程再次被殺死,沒有拋出任何異常或任何警告消息或其他東西.p>

更奇怪的是,這段代碼在另一個項目中運行得很好,但在這里它就不起作用了.

靜態無效 ImportLicence(){InsertToDb();}公共異步無效 InsertoDb(){var x = 等待 GetSP();}公共異步任務<字典<ServicePlanViewModel,列表<ServicePlanViewModel>>>獲取SP(){var sp = 等待 MakeRq();}公共異步任務<字符串>生成請求(){var authString = 等待 GetAuth();…………返回等待響應.Content.ReadAsStringAsync();}私有異步任務<字符串>獲取授權(){......var authResult = 等待 authContext.AcquireTokenAsync(GraphUri, clientCredential);返回 authResult.CreateAuthorizationHeader();}

解決方案

進程被簡單地殺死.沒有拋出異常,什么都沒有.

我假設您在控制臺應用程序中運行它,并且您的頂級代碼看起來像這樣:

static void Main(){我的方法異步();}

在這種情況下,main 方法實際上會退出,因為它不會等待您的異步代碼完成.

在控制臺應用程序中使用 async 的一種方法是阻塞 Main 方法.通常,您希望一直異步",但控制臺應用程序的 Main 方法是此規則的一個例外:

static void Main() =>MainAsync().GetAwaiter().GetResult();靜態異步任務 MainAsync(){//Main 的原始代碼,但添加了任何必要的 `await`.等待 MyMethodAsync();}

更新: 不要使用 異步無效;使用 async Task 代替:

靜態異步任務 ImportLicenceAsync(){等待 InsertToDbAsync();}公共異步任務 InsertoDbAsync(){var x = 等待 GetSPAsync();}

I am trying to connect to Azure AD and I am using this code.

try
{
    var clientCredential = new ClientCredential(_clientId, _clientSecret);
    var authContext = new AuthenticationContext(AuthUri + _tenant);
    var authResult = await authContext.AcquireTokenAsync(GraphUri,clientCredential);
    var authString = authResult.CreateAuthorizationHeader();
    var client = new HttpClient();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    var request = new HttpRequestMessage
    {
        Method = HttpMethod.Get,
        RequestUri = _requestUri,
    };
    request.Headers.Add("Authorization", authString);
    HttpResponseMessage response = null;
    await client.SendAsync(request).ContinueWith(taskWithMessage =>
    {
        response = taskWithMessage.Result;
    });
    return await response.Content.ReadAsStringAsync();
}
catch (Exception ex)
{
   Console.WriteLine(ex);
}

The big problem that I don't understand is that when the execution reaches the first await (var authResult = await authContext.AcquireTokenAsync(GraphUri,clientCredential);) the process is simply killed. No exception is thrown, nothing.

If I replace that line with

var authResult = authContext.AcquireTokenAsync(GraphUri,clientCredential); 
var authString = authResult.Result.CreateAuthorizationHeader();

the execution goes on until await client.SendAsync(request).ContinueWith(taskWithMessage... where the process is killed again without any exception being thrown or any message of warning or something.

The even weirder thing is that this code runs just fine in another project but here it just wont work.

Edit:

static void ImportLicence()
{
   InsertToDb();
}

public async void InsertoDb()
{
   var x = await GetSP();
}

public async Task<Dictionary<ServicePlanViewModel, List<ServicePlanViewModel>>> GetSP()
{
   var sp = await MakeRq();
}

public async Task<string> MakeRequest()
{
   var authString = await GetAuth();
   ..........
   return await response.Content.ReadAsStringAsync();
}

private async Task<string> GetAuth()
{
   .....
   var authResult = await authContext.AcquireTokenAsync(GraphUri, clientCredential);
   return authResult.CreateAuthorizationHeader();
}

解決方案

the process is simply killed. No exception is thrown, nothing.

I assume that you are running this in a Console application, and that your top-level code would look something like this:

static void Main()
{
  MyMethodAsync();
}

In which case, the main method would in fact exit, since it is not waiting for your asynchronous code to complete.

One way to work with async in Console applications is to block in the Main method. Normally, you want to go "async all the way", but a Console app's Main method is an exception to this rule:

static void Main() => MainAsync().GetAwaiter().GetResult();
static async Task MainAsync()
{
  // Original code from Main, but adding any necessary `await`s.
  await MyMethodAsync();
}

Update: Don't use async void; use async Task instead:

static async Task ImportLicenceAsync()
{
  await InsertToDbAsync();
}

public async Task InsertoDbAsync()
{
  var x = await GetSPAsync();
}

這篇關于等待殺死進程的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

ASP.NET Core authenticating with Azure Active Directory and persisting custom Claims across requests(ASP.NET Core 使用 Azure Active Directory 進行身份驗證并跨請求保留自定義聲明)
ASP.NET Core 2.0 Web API Azure Ad v2 Token Authorization not working(ASP.NET Core 2.0 Web API Azure Ad v2 令牌授權不起作用)
How do I get Azure AD OAuth2 Access Token and Refresh token for Daemon or Server to C# ASP.NET Web API(如何獲取守護進程或服務器到 C# ASP.NET Web API 的 Azure AD OAuth2 訪問令牌和刷新令牌) - IT屋-程序員軟件開發技
Azure KeyVault Active Directory AcquireTokenAsync timeout when called asynchronously(異步調用時 Azure KeyVault Active Directory AcquireTokenAsync 超時)
Getting access token using email address and app password from oauth2/token(使用電子郵件地址和應用程序密碼從 oauth2/token 獲取訪問令牌)
New Azure AD application doesn#39;t work until updated through management portal(新的 Azure AD 應用程序在通過管理門戶更新之前無法運行)
主站蜘蛛池模板: 西宁装修_西宁装修公司-西宁业之峰装饰-青海业之峰墅级装饰设计公司【官网】 | 全屋整木定制-橱柜,家具定制-四川峨眉山龙马木业有限公司 | 上海logo设计| 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 房在线-免费房产管理系统软件-二手房中介房屋房源管理系统软件 | 逗网红-抖音网红-快手网红-各大平台网红物品导航 | 东莞市天进机械有限公司-钉箱机-粘箱机-糊箱机-打钉机认准东莞天进机械-厂家直供更放心! | DDoS安全防护官网-领先的DDoS安全防护服务商 | 贝朗斯动力商城(BRCPOWER.COM) - 买叉车蓄电池上贝朗斯商城,价格更超值,品质有保障! | 急救箱-应急箱-急救包厂家-北京红立方医疗设备有限公司 | 北京亦庄厂房出租_经开区产业园招商信息平台 | 间甲酚,间甲酚厂家-山东祥东新材料 | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | IHDW_TOSOKU_NEMICON_EHDW系列电子手轮,HC1系列电子手轮-上海莆林电子设备有限公司 | 济南网站策划设计_自适应网站制作_H5企业网站搭建_济南外贸网站制作公司_锐尚 | 真石漆,山东真石漆,真石漆厂家,真石漆价格-山东新佳涂料有限公司 | Win10系统下载_32位/64位系统/专业版/纯净版下载 | 釜溪印象网络 - Powered by Discuz! | 广州办公室设计,办公室装修,写字楼设计,办公室装修公司_德科 | 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 智慧物联网行业一站式解决方案提供商-北京东成基业 | STRO|DTRO-STRO反渗透膜(科普)_碟滤 | 一体化污水处理设备,一体化污水设备厂家-宜兴市福源水处理设备有限公司 | 众能联合-提供高空车_升降机_吊车_挖机等一站工程设备租赁 | 工业rfid读写器_RFID工业读写器_工业rfid设备厂商-ANDEAWELL | 阻垢剂-反渗透缓蚀阻垢剂厂家-山东鲁东环保科技有限公司 | 大型果蔬切片机-水果冬瓜削皮机-洗菜机切菜机-肇庆市凤翔餐饮设备有限公司 | 混合气体腐蚀试验箱_盐雾/硫化氢/气体腐蚀试验箱厂家-北京中科博达 | 济南网站建设_济南网站制作_济南网站设计_济南网站建设公司_富库网络旗下模易宝_模板建站 | POS机办理_个人POS机免费领取 - 银联POS机申请首页 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | 换网器_自动换网器_液压换网器--郑州海科熔体泵有限公司 | 外贮压-柜式-悬挂式-七氟丙烷-灭火器-灭火系统-药剂-价格-厂家-IG541-混合气体-贮压-非贮压-超细干粉-自动-灭火装置-气体灭火设备-探火管灭火厂家-东莞汇建消防科技有限公司 | 奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌 | 阻垢剂,反渗透阻垢剂,缓蚀阻垢剂-山东普尼奥水处理科技有限公司 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | Boden齿轮油泵-ketai齿轮泵-yuken油研-无锡新立液压有限公司 | 精密光学实验平台-红外粉末压片机模具-天津博君 | 隐形纱窗|防护纱窗|金刚网防盗纱窗|韦柏纱窗|上海青木装潢制品有限公司|纱窗国标起草单位 |