C# 4.0 如何在启用AAD的azure网站中查找断开的链接?

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

我有一个网站,其中有更多的断开的链接,我托管在azure网站通过启用AAD认证这个网站

此外,我有一个控制台应用程序与下面的方法来验证网页断开的链接

 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。如果您遇到问题,我建议打开应用程序日志,将其设置为“信息”或“详细”,重现问题,并检查日志以了解问题可能是什么。