C# 如何使用MVC Web API进行身份验证?

C# 如何使用MVC Web API进行身份验证?,c#,.net,asp.net-mvc,asp.net-web-api,C#,.net,Asp.net Mvc,Asp.net Web Api,我正在尝试为另一个MVC站点访问的MVC Web API配置身份验证。我在web.config中尝试了很多东西,从SO那里得到了很多建议。然而,这一切都无济于事 我正在使用MVC网站上的以下代码: var web = new WebClient(); web.UseDefaultCredentials = false; web.Credentials = new NetworkCredential(username, password); 然后,我使用该web客户端调用另一个只包含API控制器

我正在尝试为另一个MVC站点访问的MVC Web API配置身份验证。我在web.config中尝试了很多东西,从SO那里得到了很多建议。然而,这一切都无济于事

我正在使用MVC网站上的以下代码:

var web = new WebClient();
web.UseDefaultCredentials = false;
web.Credentials = new NetworkCredential(username, password);
然后,我使用该web客户端调用另一个只包含API控制器的MVC站点上的方法。没有身份验证,一切正常,但我无法让身份验证正常工作。当发出请求时,我得到一个异常,返回401(如果你问我,这是一件好事,但它似乎没有发送凭据)

我还尝试在URL中输入用户名和密码,但也没有成功

以下是web API站点的web.config文件的相关部分:

    <authentication>
      <forms 
        cookieless="UseUri"
        enableCrossAppRedirects="false">
        <credentials passwordFormat="Clear">
          <user name="site" password="XYZ123!"/>
        </credentials>
      </forms>
    </authentication>
    <authorization>
      <deny users="?"/>
    </authorization>

我想在那里输入一个用户名/密码,以确保调用方法的是网站。顺便说一句,我的API控制器具有“Authorize”属性


我的问题是:如何向Web API站点添加身份验证,以便使用身份验证调用该站点上的方法?

您可以使用基本身份验证,而不是表单身份验证,如中所示。还有其他可能的身份验证方法。例如,基于令牌的身份验证,如所示。

使用基本身份验证。您可以创建一个AuthorizationAttribute,用于验证授权标头中的用户名/密码,并在未授权时返回401响应

有关更多信息,请参阅