如何用C#在ASP.NET MVC中实现高效编程?

2026-04-24 15:552阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计305个文字,预计阅读时间需要2分钟。

如何用C#在ASP.NET MVC中实现高效编程?

我已经简化并改写了原文,以下为结果:

我已封装了内置的WebClient,如下所示。随后,我将它定义为public class HttpWebClient: WebClient { private Uri _responseUri; public Uri ResponseUri { get { return _responseUri; } } protected override WebResponse GetWebResponse() { ... } }

我已经覆盖了内置的WebClient,如下所示.然后我打电话给它

如何用C#在ASP.NET MVC中实现高效编程?

public class HttpWebClient : WebClient { private Uri _responseUri; public Uri ResponseUri { get { return _responseUri; } } protected override WebResponse GetWebResponse(WebRequest request) { WebResponse response = base.GetWebResponse(request); _responseUri = response.ResponseUri; return response; } }

然后我像这样消耗它:

using (HttpWebClient client = new HttpWebClient()) { client.Headers[HttpRequestHeader.Authorization] = $"Bearer { _token }"; client.Headers[HttpRequestHeader.ContentType] = "application/json"; client.UploadData(_url, Encoding.UTF8.GetBytes(_data)); string queryString = client.ResponseUri.Query.Split('=').Last(); }

响应uri返回“login.microsoftonline”,而不是使用查询字符串从MVC控制器返回的url,因为它首先使用AzureAd / OpenId使用该承载令牌进行身份验证.如果我调用它两次,则返回原始的_url而不是重定向的_url.如果我删除AzureAd身份验证它工作正常.有没有办法强制响应uri回来,因为MVC控制器设置它?

假设您使用’UseOpenIdConnectAuthentication’并将其配置为使用AAD身份验证,您可以通过设置Notifications.RedirectToIdentityProvider来修改重定向uri,例如:

Notifications = new OpenIdConnectAuthenticationNotifications { RedirectToIdentityProvider = async _ => { _.ProtocolMessage.RedirectUri = _.Request.Uri.ToString(); } }

如果你使用别的东西,或者我不明白你的问题 – 请提供更多信息

本文共计305个文字,预计阅读时间需要2分钟。

如何用C#在ASP.NET MVC中实现高效编程?

我已经简化并改写了原文,以下为结果:

我已封装了内置的WebClient,如下所示。随后,我将它定义为public class HttpWebClient: WebClient { private Uri _responseUri; public Uri ResponseUri { get { return _responseUri; } } protected override WebResponse GetWebResponse() { ... } }

我已经覆盖了内置的WebClient,如下所示.然后我打电话给它

如何用C#在ASP.NET MVC中实现高效编程?

public class HttpWebClient : WebClient { private Uri _responseUri; public Uri ResponseUri { get { return _responseUri; } } protected override WebResponse GetWebResponse(WebRequest request) { WebResponse response = base.GetWebResponse(request); _responseUri = response.ResponseUri; return response; } }

然后我像这样消耗它:

using (HttpWebClient client = new HttpWebClient()) { client.Headers[HttpRequestHeader.Authorization] = $"Bearer { _token }"; client.Headers[HttpRequestHeader.ContentType] = "application/json"; client.UploadData(_url, Encoding.UTF8.GetBytes(_data)); string queryString = client.ResponseUri.Query.Split('=').Last(); }

响应uri返回“login.microsoftonline”,而不是使用查询字符串从MVC控制器返回的url,因为它首先使用AzureAd / OpenId使用该承载令牌进行身份验证.如果我调用它两次,则返回原始的_url而不是重定向的_url.如果我删除AzureAd身份验证它工作正常.有没有办法强制响应uri回来,因为MVC控制器设置它?

假设您使用’UseOpenIdConnectAuthentication’并将其配置为使用AAD身份验证,您可以通过设置Notifications.RedirectToIdentityProvider来修改重定向uri,例如:

Notifications = new OpenIdConnectAuthenticationNotifications { RedirectToIdentityProvider = async _ => { _.ProtocolMessage.RedirectUri = _.Request.Uri.ToString(); } }

如果你使用别的东西,或者我不明白你的问题 – 请提供更多信息