Ich bin nicht übermäßig genial mit meinem C#
, aber ich hoffte, wenn jemand mir mit meinem Code-Schnipsel hier helfen könnte. Erste funktioniert gut in C#
Full .net-Framework, die zweite ist, wo ich versuchte, die erste über dotnet
Kern (Standard 1.3) zu ändern, aber es funktioniert einfach nicht und scheint auf "mit (Stream-Stream = response.GetResponseStream()) "with" "errorMessage": "Der entfernte Server hat eine error: (400)
Bad Request zurückgegeben.", aber keine Ahnung warum. Ich nehme an, es hat etwas mit den * async-Anrufen zu tun, aber wirklich nicht sicher.Convert C# von Full Framework zu Core mit WebRequest
Vielen Dank schon und Hilfe wird sehr geschätzt.
public static string AcquireTokenBySpn(string tenantId, string clientId, string clientSecret)
{
var payload = String.Format(SpnPayload, WebUtility.UrlEncode(ArmResource), WebUtility.UrlEncode(clientId),
WebUtility.UrlEncode(clientSecret));
byte[] data = Encoding.ASCII.GetBytes(payload);
var address = String.Format(TokenEndpoint, tenantId);
WebRequest request = WebRequest.Create(address);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
string responseContent = null;
using (WebResponse response = request.GetResponse())
{
using (Stream stream = response.GetResponseStream())
{
if (stream != null)
using (StreamReader sr99 = new StreamReader(stream))
{
responseContent = sr99.ReadToEnd();
}
}
}
JObject jObject = JObject.Parse(responseContent);
return (string)jObject["access_token"];
}
Dies ist der "Kern Schnipsel".
public static async Task<string> AcquireTokenBySpn(string tenantId, string clientId, string clientSecret, double apiVersion)
{
var payload = String.Format(SpnPayload, WebUtility.UrlEncode(clientId),
WebUtility.UrlEncode(clientSecret));
var data = Encoding.ASCII.GetBytes(payload);
var address = String.Format(TokenEndpoint, tenantId, apiVersion);
WebRequest request = WebRequest.Create(address);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
//request. ContentLength = data.Length;
using (Stream stream = await request.GetRequestStreamAsync())
{
stream.Write(data, 0, data.Length);
}
string responseContent = null;
using (WebResponse response = await request.GetResponseAsync())
{
using (Stream stream = response.GetResponseStream())
{
if (stream != null)
using (StreamReader sr99 = new StreamReader(stream))
{
responseContent = sr99.ReadToEnd();
}
}
}
JObject jObject = JObject.Parse(responseContent);
return (string)jObject["access_token"];
}
}
Haben Sie überprüft, ob die URL und der Text der Anfrage korrekt sind? Ich stelle fest, dass die Codes \t 'Nutzlast' und' Adresse' nicht identisch sind. – skyoxZ