小编Ras*_*ash的帖子

在运行时为使用基本身份验证的OData/WCF数据服务更改连接字符串

我有一个单一架构的ODATA服务.这些指向开发数据库,​​并通过WCF数据服务提供服务,然后运行Excel/Powerpivot的客户端使用它来获取报告等自己的数据.

该服务在运行时通过几乎相同的基本身份验证进行保护:http://msdn.microsoft.com/en-us/data/gg192997

现在,如何在实时环境中工作,它位于服务器上,并根据提供的用户名/密码连接到不同的数据库.用户将输入'username @ clientID'和'password'.然后对'username @ clientID'进行split(),并根据SQL数据库检查用户名/密码.但要检查的数据库服务器URL将由ClientID确定.

此外,一旦授权,WCF数据服务需要从对应于ClientID的数据库返回数据.

我尝试的方法是修改web.config文件中的连接字符串,但这不起作用,因为它说该文件是只读的.我甚至不确定这是否会起作用.我需要做的是让EDMX/WCF数据服务从正确的数据库返回数据.这是我试图做的事情:

    private static bool TryAuthenticate(string user, string password, out IPrincipal principal)
    {

        Configuration myWebConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
        myWebConfig.AppSettings.Settings["test"].Value = "Hello";
        myWebConfig.Save();

        string newConnStr = myWebConfig.ConnectionStrings.ConnectionStrings["IntelCorpEntities"].ToString();
        newConnStr.ToString().Replace("SERGEIX01", "SERVERX01");
        myWebConfig.ConnectionStrings.ConnectionStrings["IntelCorpEntities"].ConnectionString = newConnStr;            
        myWebConfig.Save();

        if (user.ToLower().Equals("admin") && password.Equals("password"))
        {
            principal = new GenericPrincipal(new GenericIdentity(user), new string[] { "Users" });
            return true;
        }
        else
        {
            principal = null;
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

authentication connection wcf edmx odata

4
推荐指数
1
解决办法
3375
查看次数

标签 统计

authentication ×1

connection ×1

edmx ×1

odata ×1

wcf ×1