C# 4.0 如何在启用AAD的azure网站中查找断开的链接?
我有一个网站,其中有更多的断开的链接,我托管在azure网站通过启用AAD认证这个网站 此外,我有一个控制台应用程序与下面的方法来验证网页断开的链接C# 4.0 如何在启用AAD的azure网站中查找断开的链接?,c#-4.0,active-directory,azure-web-app-service,azure-active-directory,C# 4.0,Active Directory,Azure Web App Service,Azure Active Directory,我有一个网站,其中有更多的断开的链接,我托管在azure网站通过启用AAD认证这个网站 此外,我有一个控制台应用程序与下面的方法来验证网页断开的链接 public bool IsPageBroken(string pageURl) { bool isValid=true; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(pageURl); request.Credent
public bool IsPageBroken(string pageURl)
{
bool isValid=true;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(pageURl);
request.Credentials = CredentialCache.DefaultNetworkCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
isValid=true;
}
else
{
isValid=false;
}
return isValid;
}
由于AAD身份验证,尽管我正在传递凭据,但我获得(401)未经授权
我们是否可以解决此问题(忽略登录选项)
谢谢,
Saravanan您收到401未经授权响应的原因是您试图使用CredentialCache.DefaultNetworkCredentials对web应用进行身份验证。这适用于托管在公司域中的web应用,但不适用于托管在Azure中的web应用 如果要调用AAD protect web应用程序,则需要使用获取令牌并将该令牌附加到HTTP请求的授权标头
您可以在此处找到示例代码和一些说明:。请务必关注客户端说明,因为您已经使用AAD设置和配置了web应用。非常感谢您的输入,在更改如下代码后,我可以获得访问令牌,现在我可以访问云站点URL。再次感谢
do
{
retry = false;
try
{
//token = authContext.AcquireToken(todoListResourceId, clientCredential);
token = authContext.AcquireToken(resourceId, clientId, new Uri("https://mysitename.azurewebsites.net"));
}
catch (AdalException ex)
{
if (ex.ErrorCode == "temporarily_unavailable")
{
retry = true;
retryCount++;
Thread.Sleep(3000);
}
}
} while ((retry == true) && (retryCount < 3));
return token;
do
{
重试=错误;
尝试
{
//token=authContext.AcquireToken(todoListResourceId,clientCredential);
token=authContext.AcquireToken(资源ID、客户端ID、新Urihttps://mysitename.azurewebsites.net"));
}
捕获(ADALEX)
{
如果(例如,错误代码==“暂时不可用”)
{
重试=真;
retryCount++;
睡眠(3000);
}
}
}而((retry==true)和(&(retryCount<3));
返回令牌;
Hi Chris,谢谢你的快速回复,我已经尝试过你的方法它只对WEB api和WEB服务有效,而对WEB应用程序(asp.net,mvc)无效,你能建议我通过WEB应用程序(mvc,asp.net)的AAD身份验证的其他方法吗?它应该对所有HTTP端点都有效,web应用程序或web api。如果您遇到问题,我建议打开应用程序日志,将其设置为“信息”或“详细”,重现问题,并检查日志以了解问题可能是什么。