我正在开发一个部署到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文件并从那里获取正确的端点。但是当我创建新项目时,未列出配置模板。那我该怎么做呢?
答案 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的位置,那么我将不得不指定代码中的位置。