这类似于这个问题 ; 但是,略有不同,答案对我不起作用(或者看起来像是原始的提问者)
我在.NET Framework 4.5中创建了一个ASP.NET Web API项目。我想添加基本身份验证,在该身份验证中,我会在每次请求时验证用户凭据。我使用从几个站点找到的代码(我会发布链接,但是我需要更多信誉才能发布两个以上的链接)来创建BasicAuthenticationAttribute并提出一个可行的解决方案。
所有这些在localhost上都运行良好,但是当我将其移至GoDaddy共享托管站点时,它始终会返回未经授权的状态。此未经授权的响应出现在我的授权之前,我已经通过删除授权码证明了这一点,这仍然会导致未经授权的响应。现在,有趣的是,如果我没有在请求中添加用户凭据,它就可以正常工作。仅当我添加凭据时,才会收到未经授权的响应。
总结一下...
我已经看到了几篇概述表单身份验证的文章,我需要启用匿名身份验证。我已经尝试了所有方法,但没有任何方法可以解决问题。我还尝试过删除web.config中的FormsAuthentication,方法是首先删除将其添加的代码,并告诉它删除此处所示的表单身份验证。
web.config的相关部分(我已经注释掉了身份验证部分,对它进行了注释和注释,结果相同):
<!--<authentication mode="Forms">
</authentication>-->
<membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="30">
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="MyConnectionString" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="MyApplicationName" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" passwordAttemptWindow="10" passwordStrengthRegularExpression="" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0"/>
</providers>
</membership>
<roleManager enabled="true" defaultProvider="CustomizedRoleProvider" cookieTimeout="30">
<providers>
<add name="CustomizedRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="MyConnectionString" applicationName="MyApplicationName"/>
</providers>
</roleManager>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="FormsAuthentication" />
</modules>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
客户代码调用服务:
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(new …Run Code Online (Sandbox Code Playgroud)