窗口服务问题

时间:2013-03-27 23:51:22

标签: c# windows-services

我目前正致力于在窗口服务中托管wcf服务。 wcf服务使客户端可以使用实体框架访问数据库。我让他们都工作了。我一直在尝试两个条件,这给了我不同的结果。

1)当我在Windows服务的Service类中以编程方式对数据库路径进行硬编码时,在app.config文件中的连接字符串中动态更改数据源。执行下面的代码后,我可以通过服务获取查询数据使用返回XML文档的Web浏览器。但是,2)由于某种原因不起作用。请参阅以下代码以动态保存app.config的数据源更改:

 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

            EntityConnectionStringBuilder efb =
                new EntityConnectionStringBuilder(
                    config.ConnectionStrings.ConnectionStrings["iPhysioAndroidDBEntities1"]
                        .ConnectionString);

            SqlConnectionStringBuilder sqb =
                new SqlConnectionStringBuilder(efb.ProviderConnectionString);

              **// hard-coded the db path
            sqb.DataSource = "C:\\Users\\Siu W\\Desktop\\data\\iPhysioAndroidDB";**

            efb.ProviderConnectionString = sqb.ConnectionString;
            Console.WriteLine(sqb.ConnectionString);
            config.ConnectionStrings.ConnectionStrings["iPhysioAndroidDBEntities1"]
                .ConnectionString = efb.ConnectionString;

            config.Save(ConfigurationSaveMode.Modified, true);
            ConfigurationManager.RefreshSection("connectionStrings");

2)当我尝试使用System.environment.Username从机器获取当前用户名以获取上述相同代码中的完整db文件路径时,当我在其中放置断点时,它会返回机器的用户名调试模式。但是,我无法使用Web浏览器通过服务获取查询结果。它显示为“请求错误”。

   **// dynamically get the user name for the db path
            sqb.DataSource = "C:\\Users\\" + System.Environment.UserName + "\\Desktop\\data\\iPhysioAndroidDB";**

这个问题真的很奇怪。我已经检查过两种方式都返回相同的数据库路径,但只有硬编码的路径才有效。有谁知道这个的原因以及如何解决这个问题?

0 个答案:

没有答案