如何找到正确的服务端点Uri

时间:2015-08-28 15:28:51

标签: c# wcf

我正在开发一个部署到TEST然后是LIVE网络服务器的应用程序。 我希望我正在使用的类库在部署时使用正确的服务端点。 目前代码如下;

                    var data = new SettingsViewModel()
                    {
                        ServiceURI = Constants.LIVE_ENDPOINT_SERVICE_ADDRESS,
                        AutoSync = Constants.DEFAULT_AUTO_SYNC,
                        AppDataFolder = Path.Combine(ApplicationData.Current.LocalFolder.Path, Constants.ROOT_FOLDER, Constants.DATA_FOLDER),
                        MapKey = Constants.BASIC_MAP_KEY,
                        Logging = false
                    };
#if DEBUG
                    data.ServiceURI = Constants.DEV_ENDPOINT_SERVICE_ADDRESS;
#endif

如您所见,这只能获取DEV或LIVE端点。此代码无法区分Web服务器是LIVE还是TEST 我考虑过设置App.Config文件并从那里获取正确的端点。但是当我创建新项目时,未列出配置模板。那我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

现在我可以提出这个解决方案:

public static class Constants
{
     public static string GetEndPoint()
     {
         // Debugging purpose
         if (System.Diagnose.Debug.IsAttached)
         {
            return DEV_ENDPOINT_SERVICE_ADDRESS;
         }
         else if ( Environment.MachineName == "Test Server"  ) // You need to know your test server machine name at hand.
         {
            return "Return test Server endpoint"
         }
         else
         {
            return "Return live server endpoint";
         }         
     }
}

您可以在SettingsViewModel中使用它,如下所示:

var data = new SettingsViewModel()
{
  ServiceURI = Constants.GetEndPoint(),
  AutoSync = Constants.DEFAULT_AUTO_SYNC,
  AppDataFolder = Path.Combine(ApplicationData.Current.LocalFolder.Path, Constants.ROOT_FOLDER, Constants.DATA_FOLDER),
  MapKey = Constants.BASIC_MAP_KEY,
  Logging = false
};

此解决方案的缺点是,如果您更改测试服务器,则需要在代码中手动更改。

答案 1 :(得分:0)

做了一些研究后,我意识到我需要澄清一些事情。我正在处理的应用程序是Windows RT应用程序,这不允许配置文件。我打算使用的解决方案是使用本地设置,但这些设置不会像App.Config那样引用外部文件。如果我想更改EndPoint的位置,那么我将不得不指定代码中的位置。