C# 对我的网站使用基本身份验证时无法连接到服务器

C# 对我的网站使用基本身份验证时无法连接到服务器,c#,asp.net,sql-server,sql-server-2008,basic-authentication,C#,Asp.net,Sql Server,Sql Server 2008,Basic Authentication,我正在对托管在服务器上的web api使用基本身份验证。它在我的本地服务器上运行良好,具有基本身份验证。但当我将其托管到服务器时,会导致以下错误 *{“Message”:“出现错误”。,“ExceptionMessage”:“建立到SQL Server的连接时发生与网络相关或特定于实例的错误。找不到或无法访问该服务器。请验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40-无法打开到SQL的连接。)* 当我删除基本身份验证时,它在服务器上

我正在对托管在服务器上的web api使用基本身份验证。它在我的本地服务器上运行良好,具有基本身份验证。但当我将其托管到服务器时,会导致以下错误

*{“Message”:“出现错误”。,“ExceptionMessage”:“建立到SQL Server的连接时发生与网络相关或特定于实例的错误。找不到或无法访问该服务器。请验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40-无法打开到SQL的连接。)*

当我删除基本身份验证时,它在服务器上也可以正常工作

我的连接字符串

<connectionStrings>
<add name="DefaultConnection" connectionString="Password=password;Persist Security Info=True;User ID=wbuser;Initial Catalog=WinBouts_com;Data Source=WINBOUTSAPIVM"
  providerName="System.Data.SqlClient" />
<add name="WinBoutsConnectionString" connectionString="Password=password;Persist Security Info=True;User ID=wbuser;Initial Catalog=WinBouts_com;Data Source=WINBOUTSAPIVM"
  providerName="System.Data.SqlClient" />    

我正在使用system.web.providers进行基本身份验证,因此我在我的web.config中找到了这个

<!--
        If you are deploying to a cloud environment that has multiple web server instances,
        you should change session state mode from "InProc" to "Custom". In addition,
        change the connection string named "DefaultConnection" to connect to an instance
        of SQL Server (including SQL Azure and SQL  Compact) instead of to SQL Server Express.
  -->
<sessionState mode="Custom" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="WinBoutsConnectionString" />
  </providers>
</sessionState>

我确实将模式更改为“自定义”,并且我假设我的连接字符串连接到sql server而不是sql server express??对此我不确定

有趣的是,它在connectionStringName上显示了一个错误,说“属性是不允许的”?但在我的本地VM中,它不会抛出任何这样的错误,因此我想基本身份验证在我的本地VM上工作得很好


有谁能告诉我哪里出了问题。如果有任何建议,我将不胜感激。我已经为此绞尽脑汁了一整天:(

最终解决了问题。问题出在我的基本身份验证筛选器类中

private bool TryGetPrincipal(string username, string password, out IPrincipal principal)
    {      string connectionString = ConfigurationManager.ConnectionStrings["WinBoutsConnectionString"].ConnectionString;    

        username = username.Trim();
        password = password.Trim();

        //only supporting SSO login atm
       // var valid = Membership.Provider.ValidateUser(username, password);
        serviceContext = new WinBoutsDataContext<DataAccess.Model.UserInfo>(connectionString);
        userRepository = new UserRepository(serviceContext);

        var valid = this.userRepository.ValidateAccount(username, password);

        if (valid)
        {
            // once the user is verified, assign it to an IPrincipal with the identity name and applicable roles
            principal = new GenericPrincipal(new GenericIdentity(username), System.Web.Security.Roles.GetRolesForUser(username));
            return true;
        }

        //user wasn't found, unauthorised
        principal = null;
        return false;
    }
private bool TryGetPrincipal(字符串用户名、字符串密码、out-IPrincipal主体)
{string connectionString=ConfigurationManager.ConnectionStrings[“WinBoutsConnectionString”].connectionString;
username=username.Trim();
password=password.Trim();
//仅支持SSO登录atm
//var valid=Membership.Provider.ValidateUser(用户名、密码);
serviceContext=新的WinBoutsDataContext(connectionString);
userRepository=新的userRepository(serviceContext);
var valid=this.userRepository.ValidateAccount(用户名、密码);
如果(有效)
{
//验证用户后,将其分配给具有标识名和适用角色的IPrincipal
主体=新的GenericPrincipal(新的GenericEntity(用户名),System.Web.Security.Roles.GetRolesForUser(用户名));
返回true;
}
//未找到用户,未经授权
principal=null;
返回false;
}
我在这里硬编码了我的DataContext,但之前我没有将连接字符串传递给它。我只是选择了WinBoutsDataContext的默认构造函数,当我将代码放到服务器上时,该构造函数不起作用