aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-12-24 14:46:55 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-12-24 14:46:55 +0200
commit0fb83fb3abb456ee6707b7f3cabc6b0c1ab2281b (patch)
tree6b0076b6c1daacd51c2aab18aaaf15e6edb19d9e /Software/Visual_Studio
parent2f77ad3cebf771bdf02188174c9712027b004d41 (diff)
downloadTango-0fb83fb3abb456ee6707b7f3cabc6b0c1ab2281b.tar.gz
Tango-0fb83fb3abb456ee6707b7f3cabc6b0c1ab2281b.zip
Moved all common web components to Tango.Web
Changed app keys names. Fixed issue with machine studio and the initialization of observables static collections.
Diffstat (limited to 'Software/Visual_Studio')
-rw-r--r--Software/Visual_Studio/Build/Shortcuts/Machine Studio.lnkbin1581 -> 1516 bytes
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Authentication/DefaultAuthenticationProvider.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoginViewVM.cs1
-rw-r--r--Software/Visual_Studio/Tango.Web/ApplicationInsights.config2
-rw-r--r--Software/Visual_Studio/Tango.Web/Controllers/JsonController.cs (renamed from Software/Visual_Studio/Web/Tango.MachineService/JsonController.cs)2
-rw-r--r--Software/Visual_Studio/Tango.Web/Controllers/ProtoController.cs (renamed from Software/Visual_Studio/Web/Tango.MachineService/ProtoController.cs)2
-rw-r--r--Software/Visual_Studio/Tango.Web/Formatters/JsonNetFormatter.cs (renamed from Software/Visual_Studio/Web/Tango.MachineService/JsonNetFormatter.cs)2
-rw-r--r--Software/Visual_Studio/Tango.Web/Formatters/ProtoBufFormatter.cs (renamed from Software/Visual_Studio/Web/Tango.MachineService/ProtoBufFormatter.cs)2
-rw-r--r--Software/Visual_Studio/Tango.Web/Helpers/AzureDirectoryHelper.cs (renamed from Software/Visual_Studio/Web/Tango.MachineService/Helpers/AzureDirectoryHelper.cs)2
-rw-r--r--Software/Visual_Studio/Tango.Web/Helpers/ObservablesContextHelper.cs (renamed from Software/Visual_Studio/Web/Tango.MachineService/Helpers/ObservablesContextHelper.cs)10
-rw-r--r--Software/Visual_Studio/Tango.Web/Properties/AssemblyInfo.cs7
-rw-r--r--Software/Visual_Studio/Tango.Web/SMO/SmoManager.cs (renamed from Software/Visual_Studio/Web/Tango.MachineService/SMO/SmoManager.cs)10
-rw-r--r--Software/Visual_Studio/Tango.Web/Storage/ExtensionMethods.cs48
-rw-r--r--Software/Visual_Studio/Tango.Web/Storage/StorageManager.cs27
-rw-r--r--Software/Visual_Studio/Tango.Web/Tango.Web.csproj276
-rw-r--r--Software/Visual_Studio/Tango.Web/WebApiException.cs (renamed from Software/Visual_Studio/Web/Tango.MachineService/WebApiException.cs)2
-rw-r--r--Software/Visual_Studio/Tango.Web/WebConfig.cs24
-rw-r--r--Software/Visual_Studio/Tango.Web/packages.config31
-rw-r--r--Software/Visual_Studio/Tango.sln54
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/App_Start/WebApiConfig.cs1
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Config.cs16
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs22
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs46
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Helpers/StorageHelper.cs68
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/MachineServiceConfig.cs15
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj17
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Web.config23
27 files changed, 553 insertions, 159 deletions
diff --git a/Software/Visual_Studio/Build/Shortcuts/Machine Studio.lnk b/Software/Visual_Studio/Build/Shortcuts/Machine Studio.lnk
index 9c594a6b0..16360627d 100644
--- a/Software/Visual_Studio/Build/Shortcuts/Machine Studio.lnk
+++ b/Software/Visual_Studio/Build/Shortcuts/Machine Studio.lnk
Binary files differ
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Authentication/DefaultAuthenticationProvider.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Authentication/DefaultAuthenticationProvider.cs
index 3293dab3f..450756705 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Authentication/DefaultAuthenticationProvider.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Authentication/DefaultAuthenticationProvider.cs
@@ -65,6 +65,8 @@ namespace Tango.MachineStudio.UI.Authentication
ObservablesContext.OverrideSettingsDataSource(response.DataSource);
+ ObservablesStaticCollections.Instance.Initialize();
+
using (ObservablesContext db = ObservablesContext.CreateDefault())
{
db.Roles.Load();
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoginViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoginViewVM.cs
index 4e659d46a..59cc69a57 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoginViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoginViewVM.cs
@@ -124,7 +124,6 @@ namespace Tango.MachineStudio.UI.ViewModels
{
_authenticationProvider.Login(Email, Password);
- ObservablesStaticCollections.Instance.Initialize();
_eventLogger.Log(EventTypes.ApplicationStarted, "Application Started!");
_navigationManager.NavigateTo(NavigationView.MainView);
diff --git a/Software/Visual_Studio/Tango.Web/ApplicationInsights.config b/Software/Visual_Studio/Tango.Web/ApplicationInsights.config
new file mode 100644
index 000000000..75e12df9d
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Web/ApplicationInsights.config
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" /> \ No newline at end of file
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/JsonController.cs b/Software/Visual_Studio/Tango.Web/Controllers/JsonController.cs
index 163a89589..a581d9ec7 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/JsonController.cs
+++ b/Software/Visual_Studio/Tango.Web/Controllers/JsonController.cs
@@ -11,7 +11,7 @@ using System.Web.Http;
using System.Web.Http.Controllers;
using Tango.Logging;
-namespace Tango.MachineService
+namespace Tango.Web.Controllers
{
public class JsonController : ApiController
{
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/ProtoController.cs b/Software/Visual_Studio/Tango.Web/Controllers/ProtoController.cs
index 572604d3c..090638f3a 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/ProtoController.cs
+++ b/Software/Visual_Studio/Tango.Web/Controllers/ProtoController.cs
@@ -11,7 +11,7 @@ using System.Web.Http;
using System.Web.Http.Controllers;
using Tango.Logging;
-namespace Tango.MachineService
+namespace Tango.Web.Controllers
{
public class ProtoController : ApiController
{
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/JsonNetFormatter.cs b/Software/Visual_Studio/Tango.Web/Formatters/JsonNetFormatter.cs
index 7cadceb0b..7912f810f 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/JsonNetFormatter.cs
+++ b/Software/Visual_Studio/Tango.Web/Formatters/JsonNetFormatter.cs
@@ -14,7 +14,7 @@ using System.Threading.Tasks;
using System.Web;
using Tango.BL;
-namespace Tango.MachineService
+namespace Tango.Web.Formatters
{
public class JsonNetFormatter : MediaTypeFormatter
{
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/ProtoBufFormatter.cs b/Software/Visual_Studio/Tango.Web/Formatters/ProtoBufFormatter.cs
index b82f1adef..eee35ec6b 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/ProtoBufFormatter.cs
+++ b/Software/Visual_Studio/Tango.Web/Formatters/ProtoBufFormatter.cs
@@ -10,7 +10,7 @@ using System.Web.Http;
using Tango.PMR.Stubs;
using Tango.PMR.Synchronization;
-namespace Tango.MachineService
+namespace Tango.Web.Formatters
{
/// <summary>
/// Represents a protobuf web request/response formatter capable of formatting messages using protobuf.
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Helpers/AzureDirectoryHelper.cs b/Software/Visual_Studio/Tango.Web/Helpers/AzureDirectoryHelper.cs
index fe7733323..27b5e7cf5 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Helpers/AzureDirectoryHelper.cs
+++ b/Software/Visual_Studio/Tango.Web/Helpers/AzureDirectoryHelper.cs
@@ -4,7 +4,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Web;
-namespace Tango.MachineService.Helpers
+namespace Tango.Web.Helpers
{
public static class AzureDirectoryHelper
{
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Helpers/ObservablesContextHelper.cs b/Software/Visual_Studio/Tango.Web/Helpers/ObservablesContextHelper.cs
index fff0eebea..fcf6eb599 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Helpers/ObservablesContextHelper.cs
+++ b/Software/Visual_Studio/Tango.Web/Helpers/ObservablesContextHelper.cs
@@ -6,7 +6,7 @@ using System.Web;
using Tango.BL;
using Tango.Core;
-namespace Tango.MachineService.Helpers
+namespace Tango.Web.Helpers
{
public static class ObservablesContextHelper
{
@@ -14,12 +14,12 @@ namespace Tango.MachineService.Helpers
{
return new ObservablesContext(new DataSource()
{
- Address = Config.DB_ADDRESS,
- Catalog = Config.DB_CATALOG,
+ Address = WebConfig.DB_ADDRESS,
+ Catalog = WebConfig.DB_CATALOG,
IntegratedSecurity = false,
Type = DataSourceType.SQLServer,
- UserName = Config.DB_USER_NAME,
- Password = Config.DB_PASSWORD
+ UserName = WebConfig.DB_USER_NAME,
+ Password = WebConfig.DB_PASSWORD
});
}
}
diff --git a/Software/Visual_Studio/Tango.Web/Properties/AssemblyInfo.cs b/Software/Visual_Studio/Tango.Web/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..1471db897
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Web/Properties/AssemblyInfo.cs
@@ -0,0 +1,7 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("Tango - Web Components")]
+[assembly: AssemblyVersion("2.0.11.1608")]
+[assembly: ComVisible(false)] \ No newline at end of file
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/SMO/SmoManager.cs b/Software/Visual_Studio/Tango.Web/SMO/SmoManager.cs
index d2ee0ed5f..86953d233 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/SMO/SmoManager.cs
+++ b/Software/Visual_Studio/Tango.Web/SMO/SmoManager.cs
@@ -6,7 +6,7 @@ using System.Linq;
using System.Web;
using Tango.Core.DB;
-namespace Tango.MachineService.SMO
+namespace Tango.Web.SMO
{
public class SmoManager : IDisposable
{
@@ -16,20 +16,20 @@ namespace Tango.MachineService.SMO
public SmoManager()
{
- _connection = new ServerConnection(Config.DB_ADDRESS, Config.DB_USER_NAME, Config.DB_PASSWORD);
+ _connection = new ServerConnection(WebConfig.DB_ADDRESS, WebConfig.DB_USER_NAME, WebConfig.DB_PASSWORD);
_server = new Server(_connection);
}
public DbCredentials CreateRandomLoginAndUser()
{
- var database = _server.Databases.OfType<Database>().SingleOrDefault(x => x.Name == Config.DB_CATALOG);
+ var database = _server.Databases.OfType<Database>().SingleOrDefault(x => x.Name == WebConfig.DB_CATALOG);
String userName = GetRandomString(36);
String password = System.Web.Security.Membership.GeneratePassword(16, 2);
Login login = new Login(_server, userName);
login.LoginType = LoginType.SqlLogin;
- login.DefaultDatabase = Config.DB_CATALOG;
+ login.DefaultDatabase = WebConfig.DB_CATALOG;
login.PasswordPolicyEnforced = false;
login.Create(password);
@@ -43,7 +43,7 @@ namespace Tango.MachineService.SMO
public void DeleteLoginAndUser(String userName)
{
- var database = _server.Databases.OfType<Database>().SingleOrDefault(x => x.Name == Config.DB_CATALOG);
+ var database = _server.Databases.OfType<Database>().SingleOrDefault(x => x.Name == WebConfig.DB_CATALOG);
var user = database.Users.OfType<User>().SingleOrDefault(x => x.Name == userName);
diff --git a/Software/Visual_Studio/Tango.Web/Storage/ExtensionMethods.cs b/Software/Visual_Studio/Tango.Web/Storage/ExtensionMethods.cs
new file mode 100644
index 000000000..4acd10082
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Web/Storage/ExtensionMethods.cs
@@ -0,0 +1,48 @@
+using Microsoft.WindowsAzure.Storage.Blob;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.Web.Storage
+{
+ public static class ExtensionMethods
+ {
+ public static CloudBlockBlob CreateEmptyBlob(this CloudBlobContainer container, String name)
+ {
+ CloudBlockBlob emptyBlob = container.GetBlockBlobReference(name);
+ using (MemoryStream ms = new MemoryStream())
+ {
+ emptyBlob.UploadFromStream(ms);//Empty memory stream. Will create an empty blob.
+ }
+
+ return emptyBlob;
+ }
+
+ public static String GenerateReadSignature(this CloudBlockBlob blob, TimeSpan duration)
+ {
+ String signature = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
+ {
+ SharedAccessStartTime = DateTime.UtcNow,
+ SharedAccessExpiryTime = DateTime.UtcNow.Add(duration),
+ Permissions = SharedAccessBlobPermissions.Read
+ });
+
+ return new Uri(blob.Uri + signature).ToString();
+ }
+
+ public static String GenerateWriteSignature(this CloudBlockBlob blob, TimeSpan duration)
+ {
+ String signature = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
+ {
+ SharedAccessStartTime = DateTime.UtcNow,
+ SharedAccessExpiryTime = DateTime.UtcNow.Add(duration),
+ Permissions = SharedAccessBlobPermissions.Write
+ });
+
+ return new Uri(blob.Uri + signature).ToString();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/Tango.Web/Storage/StorageManager.cs b/Software/Visual_Studio/Tango.Web/Storage/StorageManager.cs
new file mode 100644
index 000000000..17b01d1e2
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Web/Storage/StorageManager.cs
@@ -0,0 +1,27 @@
+using Microsoft.WindowsAzure.Storage;
+using Microsoft.WindowsAzure.Storage.Blob;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.Web.Storage
+{
+ public class StorageManager
+ {
+ private CloudBlobClient _client;
+
+ public StorageManager()
+ {
+ CloudStorageAccount storageAccount = CloudStorageAccount.Parse(WebConfig.STORAGE_ACCOUNT);
+ _client = storageAccount.CreateCloudBlobClient();
+ }
+
+ public CloudBlobContainer GetContainer(String name)
+ {
+ var container = _client.GetContainerReference(name);
+ return container;
+ }
+ }
+}
diff --git a/Software/Visual_Studio/Tango.Web/Tango.Web.csproj b/Software/Visual_Studio/Tango.Web/Tango.Web.csproj
new file mode 100644
index 000000000..9d199a409
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Web/Tango.Web.csproj
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
+ <Import Project="..\packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props')" />
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{5001990F-977B-48FF-B217-0236A5022AD8}</ProjectGuid>
+ <OutputType>Library</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Tango.Web</RootNamespace>
+ <AssemblyName>Tango.Web</AssemblyName>
+ <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <Deterministic>true</Deterministic>
+ <NuGetPackageImportStamp>
+ </NuGetPackageImportStamp>
+ <WebGreaseLibPath>..\packages\WebGrease.1.5.2\lib</WebGreaseLibPath>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>..\Build\Core\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>..\Build\Core\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="Antlr3.Runtime, Version=3.4.1.9004, Culture=neutral, PublicKeyToken=eb42632606e9261f, processorArchitecture=MSIL">
+ <HintPath>..\packages\Antlr.3.4.1.9004\lib\Antlr3.Runtime.dll</HintPath>
+ </Reference>
+ <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+ <HintPath>..\packages\EntityFramework.6.0.0\lib\net45\EntityFramework.dll</HintPath>
+ </Reference>
+ <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
+ <HintPath>..\packages\EntityFramework.6.0.0\lib\net45\EntityFramework.SqlServer.dll</HintPath>
+ </Reference>
+ <Reference Include="Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604, processorArchitecture=MSIL">
+ <HintPath>..\packages\Google.Protobuf.3.4.1\lib\net45\Google.Protobuf.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.AI.Agent.Intercept, Version=2.0.6.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.ApplicationInsights.Agent.Intercept.2.0.6\lib\net45\Microsoft.AI.Agent.Intercept.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.AI.DependencyCollector, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.ApplicationInsights.DependencyCollector.2.2.0\lib\net45\Microsoft.AI.DependencyCollector.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.AI.PerfCounterCollector, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.ApplicationInsights.PerfCounterCollector.2.2.0\lib\net45\Microsoft.AI.PerfCounterCollector.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.AI.ServerTelemetryChannel, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.2.2.0\lib\net45\Microsoft.AI.ServerTelemetryChannel.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.AI.Web, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.ApplicationInsights.Web.2.2.0\lib\net45\Microsoft.AI.Web.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.AI.WindowsServer, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.ApplicationInsights.WindowsServer.2.2.0\lib\net45\Microsoft.AI.WindowsServer.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.ApplicationInsights, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.ApplicationInsights.2.2.0\lib\net46\Microsoft.ApplicationInsights.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Azure.Common, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
+ <Reference Include="Microsoft.Azure.Common.NetFramework, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
+ <Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.IdentityModel.Clients.ActiveDirectory, Version=2.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.IdentityModel.Clients.ActiveDirectory.2.7.10707.1513-rc\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms, Version=2.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.IdentityModel.Clients.ActiveDirectory.2.7.10707.1513-rc\lib\net45\Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.AzureStorageEnum, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.AzureStorageEnum.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.BatchParserClient, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.BatchParserClient.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.ConnectionInfo, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.ConnectionInfo.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.ConnectionInfoExtended, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.ConnectionInfoExtended.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Diagnostics.Strace, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Diagnostics.Strace.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Dmf, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Dmf.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Dmf.Common, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Dmf.Common.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Management.Collector, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Management.Collector.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Management.CollectorEnum, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Management.CollectorEnum.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Management.RegisteredServers, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Management.RegisteredServers.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Management.Sdk.Sfc, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Management.Sdk.Sfc.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Management.SqlParser, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Management.SqlParser.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Management.Utility, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Management.Utility.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Management.UtilityEnum, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Management.UtilityEnum.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Management.XEvent, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Management.XEvent.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Management.XEventDbScoped, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Management.XEventDbScoped.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Management.XEventDbScopedEnum, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Management.XEventDbScopedEnum.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Management.XEventEnum, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Management.XEventEnum.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.PolicyEnum, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.PolicyEnum.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.RegSvrEnum, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.RegSvrEnum.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.ServiceBrokerEnum, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.ServiceBrokerEnum.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Smo, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Smo.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.SmoExtended, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.SmoExtended.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.SqlClrProvider, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.SqlClrProvider.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.SqlEnum, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.SqlEnum.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.SqlTDiagm, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.SqlTDiagm.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.SqlWmiManagement, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.SqlWmiManagement.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.SString, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.SString.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.Types, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.Types.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.SqlServer.WmiEnum, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\lib\net40\Microsoft.SqlServer.WmiEnum.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
+ </Reference>
+ <Reference Include="Microsoft.WindowsAzure.Storage, Version=4.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
+ <Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+ <HintPath>..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
+ </Reference>
+ <Reference Include="System" />
+ <Reference Include="System.ComponentModel.DataAnnotations" />
+ <Reference Include="System.Configuration" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Runtime.Serialization" />
+ <Reference Include="System.Security" />
+ <Reference Include="System.Web" />
+ <Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.Helpers.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.Http.WebHost, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.Optimization, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.AspNet.Web.Optimization.1.1.3\lib\net40\System.Web.Optimization.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.WebPages.Deployment, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Deployment.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Razor.dll</HintPath>
+ </Reference>
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Xml" />
+ <Reference Include="WebGrease, Version=1.5.2.14234, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
+ <HintPath>..\packages\WebGrease.1.5.2\lib\WebGrease.dll</HintPath>
+ </Reference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="..\Versioning\GlobalVersionInfo.cs">
+ <Link>GlobalVersionInfo.cs</Link>
+ </Compile>
+ <Compile Include="Storage\ExtensionMethods.cs" />
+ <Compile Include="Storage\StorageManager.cs" />
+ <Compile Include="WebConfig.cs" />
+ <Compile Include="Controllers\JsonController.cs" />
+ <Compile Include="Formatters\JsonNetFormatter.cs" />
+ <Compile Include="Helpers\AzureDirectoryHelper.cs" />
+ <Compile Include="Helpers\ObservablesContextHelper.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Formatters\ProtoBufFormatter.cs" />
+ <Compile Include="Controllers\ProtoController.cs" />
+ <Compile Include="SMO\SmoManager.cs" />
+ <Compile Include="WebApiException.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="packages.config" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\Tango.BL\Tango.BL.csproj">
+ <Project>{f441feee-322a-4943-b566-110e12fd3b72}</Project>
+ <Name>Tango.BL</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Tango.Core\Tango.Core.csproj">
+ <Project>{a34ee0f0-649d-41c8-8489-b6f1cc6924ee}</Project>
+ <Name>Tango.Core</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Tango.Logging\Tango.Logging.csproj">
+ <Project>{bc932dbd-7cdb-488c-99e4-f02cf441f55e}</Project>
+ <Name>Tango.Logging</Name>
+ </ProjectReference>
+ <ProjectReference Include="..\Tango.PMR\Tango.PMR.csproj">
+ <Project>{e4927038-348d-4295-aaf4-861c58cb3943}</Project>
+ <Name>Tango.PMR</Name>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup />
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+ <PropertyGroup>
+ <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
+ </PropertyGroup>
+ <Error Condition="!Exists('..\packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Net.Compilers.2.4.0\build\Microsoft.Net.Compilers.props'))" />
+ <Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
+ <Error Condition="!Exists('..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\build\net40\Microsoft.SqlServer.SqlManagementObjects.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\build\net40\Microsoft.SqlServer.SqlManagementObjects.targets'))" />
+ </Target>
+ <Import Project="..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\build\net40\Microsoft.SqlServer.SqlManagementObjects.targets" Condition="Exists('..\packages\Microsoft.SqlServer.SqlManagementObjects.140.17283.0\build\net40\Microsoft.SqlServer.SqlManagementObjects.targets')" />
+</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/WebApiException.cs b/Software/Visual_Studio/Tango.Web/WebApiException.cs
index a52a0ce6f..c9b464c6f 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/WebApiException.cs
+++ b/Software/Visual_Studio/Tango.Web/WebApiException.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Net;
using System.Web;
-namespace Tango.MachineService
+namespace Tango.Web
{
public class WebApiException : Exception
{
diff --git a/Software/Visual_Studio/Tango.Web/WebConfig.cs b/Software/Visual_Studio/Tango.Web/WebConfig.cs
new file mode 100644
index 000000000..a10da3321
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Web/WebConfig.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Linq;
+using System.Web;
+
+namespace Tango.Web
+{
+ public class WebConfig
+ {
+ public static String DB_ADDRESS => ConfigurationManager.AppSettings[nameof(DB_ADDRESS)].ToString();
+ public static String DB_USER_NAME => ConfigurationManager.AppSettings[nameof(DB_USER_NAME)].ToString();
+ public static String DB_PASSWORD => ConfigurationManager.AppSettings[nameof(DB_PASSWORD)].ToString();
+ public static String DB_CATALOG => ConfigurationManager.AppSettings[nameof(DB_CATALOG)].ToString();
+
+ public static String STORAGE_ACCOUNT => ConfigurationManager.AppSettings[nameof(STORAGE_ACCOUNT)].ToString();
+
+ public static String TENANT_ID => ConfigurationManager.AppSettings[nameof(TENANT_ID)].ToString();
+ public static String CLIENT_ID => ConfigurationManager.AppSettings[nameof(CLIENT_ID)].ToString();
+ public static String APP_SECRET => ConfigurationManager.AppSettings[nameof(APP_SECRET)].ToString();
+
+ }
+}
+
diff --git a/Software/Visual_Studio/Tango.Web/packages.config b/Software/Visual_Studio/Tango.Web/packages.config
new file mode 100644
index 000000000..6266503ba
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Web/packages.config
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+ <package id="Antlr" version="3.4.1.9004" targetFramework="net461" />
+ <package id="EntityFramework" version="6.0.0" targetFramework="net461" />
+ <package id="Google.Protobuf" version="3.4.1" targetFramework="net461" />
+ <package id="Microsoft.ApplicationInsights" version="2.2.0" targetFramework="net461" />
+ <package id="Microsoft.ApplicationInsights.Agent.Intercept" version="2.0.6" targetFramework="net461" />
+ <package id="Microsoft.ApplicationInsights.DependencyCollector" version="2.2.0" targetFramework="net461" />
+ <package id="Microsoft.ApplicationInsights.PerfCounterCollector" version="2.2.0" targetFramework="net461" />
+ <package id="Microsoft.ApplicationInsights.Web" version="2.2.0" targetFramework="net461" />
+ <package id="Microsoft.ApplicationInsights.WindowsServer" version="2.2.0" targetFramework="net461" />
+ <package id="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel" version="2.2.0" targetFramework="net461" />
+ <package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net461" />
+ <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net461" />
+ <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net461" />
+ <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net461" />
+ <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net461" />
+ <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net461" />
+ <package id="Microsoft.AspNet.WebApi.HelpPage" version="5.2.3" targetFramework="net461" />
+ <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net461" />
+ <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net461" />
+ <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.3" targetFramework="net461" />
+ <package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.7.10707.1513-rc" targetFramework="net461" />
+ <package id="Microsoft.Net.Compilers" version="2.4.0" targetFramework="net461" developmentDependency="true" />
+ <package id="Microsoft.SqlServer.SqlManagementObjects" version="140.17283.0" targetFramework="net461" />
+ <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net461" />
+ <package id="Modernizr" version="2.6.2" targetFramework="net461" />
+ <package id="Newtonsoft.Json" version="8.0.3" targetFramework="net461" />
+ <package id="Respond" version="1.2.0" targetFramework="net461" />
+ <package id="WebGrease" version="1.5.2" targetFramework="net461" />
+</packages> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.sln b/Software/Visual_Studio/Tango.sln
index 387a9e1bf..01be05c3e 100644
--- a/Software/Visual_Studio/Tango.sln
+++ b/Software/Visual_Studio/Tango.sln
@@ -246,6 +246,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.PPC.BootScreen", "PPC
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.PPC.Logging", "PPC\Modules\Tango.PPC.Logging\Tango.PPC.Logging.csproj", "{D2EE865B-B006-487A-9487-60A663636AC3}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tango.Web", "Tango.Web\Tango.Web.csproj", "{5001990F-977B-48FF-B217-0236A5022AD8}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
AppVeyor|Any CPU = AppVeyor|Any CPU
@@ -4409,6 +4411,46 @@ Global
{D2EE865B-B006-487A-9487-60A663636AC3}.Release|x64.Build.0 = Release|Any CPU
{D2EE865B-B006-487A-9487-60A663636AC3}.Release|x86.ActiveCfg = Release|Any CPU
{D2EE865B-B006-487A-9487-60A663636AC3}.Release|x86.Build.0 = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.AppVeyor|Any CPU.ActiveCfg = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.AppVeyor|Any CPU.Build.0 = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.AppVeyor|ARM.ActiveCfg = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.AppVeyor|ARM.Build.0 = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.AppVeyor|ARM64.ActiveCfg = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.AppVeyor|ARM64.Build.0 = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.AppVeyor|x64.ActiveCfg = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.AppVeyor|x64.Build.0 = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.AppVeyor|x86.ActiveCfg = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.AppVeyor|x86.Build.0 = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Debug|ARM.Build.0 = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Debug|x64.Build.0 = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Debug|x86.Build.0 = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.DefaultBuild|Any CPU.ActiveCfg = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.DefaultBuild|Any CPU.Build.0 = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.DefaultBuild|ARM.ActiveCfg = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.DefaultBuild|ARM.Build.0 = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.DefaultBuild|ARM64.ActiveCfg = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.DefaultBuild|ARM64.Build.0 = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.DefaultBuild|x64.ActiveCfg = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.DefaultBuild|x64.Build.0 = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.DefaultBuild|x86.ActiveCfg = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.DefaultBuild|x86.Build.0 = Debug|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Release|ARM.ActiveCfg = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Release|ARM.Build.0 = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Release|ARM64.Build.0 = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Release|x64.ActiveCfg = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Release|x64.Build.0 = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Release|x86.ActiveCfg = Release|Any CPU
+ {5001990F-977B-48FF-B217-0236A5022AD8}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -4488,12 +4530,12 @@ Global
{D2EE865B-B006-487A-9487-60A663636AC3} = {0048447D-1D94-4E60-9DAD-7349C777CB4E}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
- BuildVersion_UseGlobalSettings = False
- BuildVersion_AssemblyInfoFilename = Properties\AssemblyInfo.cs
- BuildVersion_StartDate = 2000/1/1
- BuildVersion_UpdateFileVersion = False
- BuildVersion_UpdateAssemblyVersion = True
- BuildVersion_BuildVersioningStyle = None.None.Increment.DeltaBaseYearDayOfYear
SolutionGuid = {7986F7F4-A86A-4994-B1B6-0988D7F057B6}
+ BuildVersion_BuildVersioningStyle = None.None.Increment.DeltaBaseYearDayOfYear
+ BuildVersion_UpdateAssemblyVersion = True
+ BuildVersion_UpdateFileVersion = False
+ BuildVersion_StartDate = 2000/1/1
+ BuildVersion_AssemblyInfoFilename = Properties\AssemblyInfo.cs
+ BuildVersion_UseGlobalSettings = False
EndGlobalSection
EndGlobal
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/App_Start/WebApiConfig.cs b/Software/Visual_Studio/Web/Tango.MachineService/App_Start/WebApiConfig.cs
index 3129482cb..0a63e9acb 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/App_Start/WebApiConfig.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/App_Start/WebApiConfig.cs
@@ -3,6 +3,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
+using Tango.Web.Formatters;
namespace Tango.MachineService
{
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Config.cs b/Software/Visual_Studio/Web/Tango.MachineService/Config.cs
deleted file mode 100644
index b1d2dafca..000000000
--- a/Software/Visual_Studio/Web/Tango.MachineService/Config.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Configuration;
-using System.Linq;
-using System.Web;
-
-namespace Tango.MachineService
-{
- public class Config
- {
- public static String DB_ADDRESS => ConfigurationManager.AppSettings["DbAddress"].ToString();
- public static String DB_USER_NAME => ConfigurationManager.AppSettings["DbUserName"].ToString();
- public static String DB_PASSWORD => ConfigurationManager.AppSettings["DbPassword"].ToString();
- public static String DB_CATALOG => ConfigurationManager.AppSettings["DbCatalog"].ToString();
- }
-} \ No newline at end of file
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
index 8485cd67d..8d46ed7d9 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/MachineStudioController.cs
@@ -11,11 +11,13 @@ using Tango.BL.Builders;
using Tango.BL.Entities;
using Tango.BL.Enumerations;
using Tango.Core.Cryptography;
-using Tango.MachineService.Helpers;
using Tango.MachineService.Models;
using Tango.MachineStudio.Common.Authentication;
using System.Data.Entity;
using Tango.MachineStudio.Common.Update;
+using Tango.Web.Controllers;
+using Tango.Web.Helpers;
+using Tango.Web.Storage;
namespace Tango.MachineService.Controllers
{
@@ -70,11 +72,11 @@ namespace Tango.MachineService.Controllers
if (latestVersion != null && Version.Parse(latestVersion.Version) > currentVersion)
{
- var client = StorageHelper.GetStorageBlobClient();
- var container = StorageHelper.GetMachineStudioVersionsContainer(client);
+ var manager = new StorageManager();
+ var container = manager.GetContainer(MachineServiceConfig.MACHINE_STUDIO_VERSIONS_CONTAINER);
var blob = container.GetBlockBlobReference(latestVersion.BlobName);
- response.BlobAddress = StorageHelper.GenerateBlobReadSignature(blob, TimeSpan.FromMinutes(60));
+ response.BlobAddress = blob.GenerateReadSignature(TimeSpan.FromMinutes(60));
response.IsUpdateAvailable = true;
response.Version = latestVersion.Version;
@@ -116,12 +118,12 @@ namespace Tango.MachineService.Controllers
{
String newVersionFileName = "Machine Studio Version" + " " + currentVersion.ToString() + ".zip";
- var client = StorageHelper.GetStorageBlobClient();
- var container = StorageHelper.GetMachineStudioVersionsContainer(client);
- var blob = StorageHelper.CreateEmptyBlob(container, newVersionFileName);
+ var manager = new StorageManager();
+ var container = manager.GetContainer(MachineServiceConfig.MACHINE_STUDIO_VERSIONS_CONTAINER);
+ var blob = container.CreateEmptyBlob(newVersionFileName);
response.Token = Guid.NewGuid().ToString();
- response.BlobAddress = StorageHelper.GenerateBlobWriteSignature(blob, TimeSpan.FromMinutes(30));
+ response.BlobAddress = blob.GenerateWriteSignature(TimeSpan.FromMinutes(30));
_pendingUploads.Add(new MachineStudioPendingUpload()
{
@@ -237,8 +239,8 @@ namespace Tango.MachineService.Controllers
{
DataSource = new Core.DataSource()
{
- Address = Config.DB_ADDRESS,
- Catalog = Config.DB_CATALOG,
+ Address = MachineServiceConfig.DB_ADDRESS,
+ Catalog = MachineServiceConfig.DB_CATALOG,
Type = Core.DataSourceType.Azure,
IntegratedSecurity = false,
UserName = request.Email,
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs
index 68f597fcc..6b4190313 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs
@@ -23,9 +23,7 @@ using Tango.Core.DB;
using Tango.Core.Helpers;
using Tango.Core.IO;
using Tango.Logging;
-using Tango.MachineService.Helpers;
using Tango.MachineService.Models;
-using Tango.MachineService.SMO;
using Tango.PMR.Stubs;
using Tango.PMR.Synchronization;
using Tango.PPC.Common.MachineSetup;
@@ -33,6 +31,10 @@ using Tango.PPC.Common.MachineUpdate;
using Tango.PPC.Common.Update;
using Tango.Synchronization.Local;
using Tango.Synchronization.Remote;
+using Tango.Web.Controllers;
+using Tango.Web.Helpers;
+using Tango.Web.SMO;
+using Tango.Web.Storage;
namespace Tango.MachineService.Controllers
{
@@ -81,17 +83,17 @@ namespace Tango.MachineService.Controllers
response.Version = latest_machine_version.Version;
- var client = StorageHelper.GetStorageBlobClient();
- var container = StorageHelper.GetTangoVersionsContainer(client);
+ var manager = new StorageManager();
+ var container = manager.GetContainer(MachineServiceConfig.TANGO_VERSIONS_CONTAINER);
var blob = container.GetBlockBlobReference(latest_machine_version.BlobName);
- response.BlobAddress = StorageHelper.GenerateBlobReadSignature(blob, TimeSpan.FromMinutes(60));
+ response.BlobAddress = blob.GenerateReadSignature(TimeSpan.FromMinutes(60));
DbCredentials credentials = new DbCredentials();
- using (SmoManager manager = new SmoManager())
+ using (SmoManager smo = new SmoManager())
{
- credentials = manager.CreateRandomLoginAndUser();
+ credentials = smo.CreateRandomLoginAndUser();
Task.Delay(TimeSpan.FromMinutes(10)).ContinueWith((x) =>
{
@@ -104,8 +106,8 @@ namespace Tango.MachineService.Controllers
response.DataSource = new DataSource()
{
- Address = Config.DB_ADDRESS,
- Catalog = Config.DB_CATALOG,
+ Address = MachineServiceConfig.DB_ADDRESS,
+ Catalog = MachineServiceConfig.DB_CATALOG,
UserName = credentials.UserName,
Password = credentials.Password,
IntegratedSecurity = false,
@@ -147,17 +149,17 @@ namespace Tango.MachineService.Controllers
response.Version = latest_machine_version.Version;
- var client = StorageHelper.GetStorageBlobClient();
- var container = StorageHelper.GetTangoVersionsContainer(client);
+ var manager = new StorageManager();
+ var container = manager.GetContainer(MachineServiceConfig.TANGO_VERSIONS_CONTAINER);
var blob = container.GetBlockBlobReference(latest_machine_version.BlobName);
- response.BlobAddress = StorageHelper.GenerateBlobReadSignature(blob, TimeSpan.FromMinutes(60));
+ response.BlobAddress = blob.GenerateReadSignature(TimeSpan.FromMinutes(60));
DbCredentials credentials = new DbCredentials();
- using (SmoManager manager = new SmoManager())
+ using (SmoManager smo = new SmoManager())
{
- credentials = manager.CreateRandomLoginAndUser();
+ credentials = smo.CreateRandomLoginAndUser();
Task.Delay(TimeSpan.FromMinutes(10)).ContinueWith((x) =>
{
@@ -170,8 +172,8 @@ namespace Tango.MachineService.Controllers
response.DataSource = new DataSource()
{
- Address = Config.DB_ADDRESS,
- Catalog = Config.DB_CATALOG,
+ Address = MachineServiceConfig.DB_ADDRESS,
+ Catalog = MachineServiceConfig.DB_CATALOG,
UserName = credentials.UserName,
Password = credentials.Password,
IntegratedSecurity = false,
@@ -247,8 +249,8 @@ namespace Tango.MachineService.Controllers
response.DataSource = new DataSource()
{
- Address = Config.DB_ADDRESS,
- Catalog = Config.DB_CATALOG,
+ Address = MachineServiceConfig.DB_ADDRESS,
+ Catalog = MachineServiceConfig.DB_CATALOG,
UserName = credentials.UserName,
Password = credentials.Password,
IntegratedSecurity = false,
@@ -328,12 +330,12 @@ namespace Tango.MachineService.Controllers
{
String newVersionFileName = "Tango Version" + " " + currentVersion.ToString() + ".zip";
- var client = StorageHelper.GetStorageBlobClient();
- var container = StorageHelper.GetTangoVersionsContainer(client);
- var blob = StorageHelper.CreateEmptyBlob(container, newVersionFileName);
+ var manager = new StorageManager();
+ var container = manager.GetContainer(MachineServiceConfig.TANGO_VERSIONS_CONTAINER);
+ var blob = container.CreateEmptyBlob(newVersionFileName);
response.Token = Guid.NewGuid().ToString();
- response.BlobAddress = StorageHelper.GenerateBlobWriteSignature(blob, TimeSpan.FromMinutes(30));
+ response.BlobAddress = blob.GenerateWriteSignature(TimeSpan.FromMinutes(30));
_pendingUploads.Add(new PPCPendingUpload()
{
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Helpers/StorageHelper.cs b/Software/Visual_Studio/Web/Tango.MachineService/Helpers/StorageHelper.cs
deleted file mode 100644
index a2cc2a0dc..000000000
--- a/Software/Visual_Studio/Web/Tango.MachineService/Helpers/StorageHelper.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-using Microsoft.WindowsAzure.Storage;
-using Microsoft.WindowsAzure.Storage.Blob;
-using System;
-using System.Collections.Generic;
-using System.Configuration;
-using System.IO;
-using System.Linq;
-using System.Web;
-
-namespace Tango.MachineService.Helpers
-{
- public static class StorageHelper
- {
- public static CloudBlobClient GetStorageBlobClient()
- {
- String storageAddress = ConfigurationManager.AppSettings["Storage"].ToString();
- CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageAddress);
- return storageAccount.CreateCloudBlobClient();
- }
-
- public static CloudBlobContainer GetTangoVersionsContainer(CloudBlobClient client)
- {
- var container = client.GetContainerReference("tango-versions");
- return container;
- }
-
- public static CloudBlobContainer GetMachineStudioVersionsContainer(CloudBlobClient client)
- {
- var container = client.GetContainerReference("machine-studio-versions");
- return container;
- }
-
- public static CloudBlockBlob CreateEmptyBlob(CloudBlobContainer container, String name)
- {
- CloudBlockBlob emptyBlob = container.GetBlockBlobReference(name);
- using (MemoryStream ms = new MemoryStream())
- {
- emptyBlob.UploadFromStream(ms);//Empty memory stream. Will create an empty blob.
- }
-
- return emptyBlob;
- }
-
- public static String GenerateBlobReadSignature(CloudBlockBlob blob, TimeSpan duration)
- {
- String signature = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
- {
- SharedAccessStartTime = DateTime.UtcNow,
- SharedAccessExpiryTime = DateTime.UtcNow.Add(duration),
- Permissions = SharedAccessBlobPermissions.Read
- });
-
- return new Uri(blob.Uri + signature).ToString();
- }
-
- public static String GenerateBlobWriteSignature(CloudBlockBlob blob, TimeSpan duration)
- {
- String signature = blob.GetSharedAccessSignature(new SharedAccessBlobPolicy()
- {
- SharedAccessStartTime = DateTime.UtcNow,
- SharedAccessExpiryTime = DateTime.UtcNow.Add(duration),
- Permissions = SharedAccessBlobPermissions.Write
- });
-
- return new Uri(blob.Uri + signature).ToString();
- }
- }
-} \ No newline at end of file
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/MachineServiceConfig.cs b/Software/Visual_Studio/Web/Tango.MachineService/MachineServiceConfig.cs
new file mode 100644
index 000000000..6039f55ac
--- /dev/null
+++ b/Software/Visual_Studio/Web/Tango.MachineService/MachineServiceConfig.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Configuration;
+using System.Linq;
+using System.Web;
+using Tango.Web;
+
+namespace Tango.MachineService
+{
+ public class MachineServiceConfig : WebConfig
+ {
+ public static String TANGO_VERSIONS_CONTAINER => ConfigurationManager.AppSettings[nameof(TANGO_VERSIONS_CONTAINER)].ToString();
+ public static String MACHINE_STUDIO_VERSIONS_CONTAINER => ConfigurationManager.AppSettings[nameof(MACHINE_STUDIO_VERSIONS_CONTAINER)].ToString();
+ }
+} \ No newline at end of file
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj b/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj
index c05cb5fe7..ca1376ff7 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Tango.MachineService.csproj
@@ -275,16 +275,10 @@
</Compile>
<Compile Include="App_Start\BundleConfig.cs" />
<Compile Include="App_Start\FilterConfig.cs" />
- <Compile Include="Config.cs" />
+ <Compile Include="MachineServiceConfig.cs" />
<Compile Include="Controllers\MachineStudioController.cs" />
- <Compile Include="Helpers\AzureDirectoryHelper.cs" />
- <Compile Include="Helpers\ObservablesContextHelper.cs" />
- <Compile Include="Helpers\StorageHelper.cs" />
- <Compile Include="JsonController.cs" />
- <Compile Include="JsonNetFormatter.cs" />
<Compile Include="Models\MachineStudioPendingUpload.cs" />
<Compile Include="Models\PPCPendingUpload.cs" />
- <Compile Include="ProtoBufFormatter.cs" />
<Compile Include="App_Start\RouteConfig.cs" />
<Compile Include="App_Start\WebApiConfig.cs" />
<Compile Include="Controllers\PPCController.cs" />
@@ -293,9 +287,6 @@
</Compile>
<Compile Include="Models\Person.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="ProtoController.cs" />
- <Compile Include="SMO\SmoManager.cs" />
- <Compile Include="WebApiException.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="Global.asax" />
@@ -346,6 +337,10 @@
<Project>{74e700b0-1156-4126-be40-ee450d3c3026}</Project>
<Name>Tango.Transport</Name>
</ProjectReference>
+ <ProjectReference Include="..\..\Tango.Web\Tango.Web.csproj">
+ <Project>{5001990f-977b-48ff-b217-0236a5022ad8}</Project>
+ <Name>Tango.Web</Name>
+ </ProjectReference>
</ItemGroup>
<ItemGroup>
<Folder Include="App_Data\" />
@@ -380,7 +375,7 @@
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
- <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
+ <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
</VisualStudio>
</ProjectExtensions>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Web.config b/Software/Visual_Studio/Web/Tango.MachineService/Web.config
index ef2420349..77d9a1bb3 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Web.config
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Web.config
@@ -13,15 +13,20 @@
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
- <add key="LocalServerAddress" value="twine01\SQLTWINE_TEST" />
- <add key="FtpAddress" value="Twine01" />
- <add key="FtpUserName" value="Tango|FTPReader" />
- <add key="FtpPassword" value="Aa123456" />
- <add key="DbAddress" value="twine.database.windows.net" />
- <add key="DbUserName" value="Roy" />
- <add key="DbPassword" value="Aa123456" />
- <add key="DbCatalog" value="Tango" />
- <add key="Storage" value="DefaultEndpointsProtocol=https;AccountName=tangostorage;AccountKey=S4z/D+Yg6mwMis+bs/VpcDLA9yE1iZaYq23shQlRIi2KmM9E7JY8zdZjeAPOPdG3gONHoNDEpsgH6D4cqQ/bsA==;EndpointSuffix=core.windows.net" />
+
+ <add key="DB_ADDRESS" value="twine.database.windows.net" />
+ <add key="DB_USER_NAME" value="Roy" />
+ <add key="DB_PASSWORD" value="Aa123456" />
+ <add key="DB_CATALOG" value="Tango" />
+
+ <add key="STORAGE" value="DefaultEndpointsProtocol=https;AccountName=tangostorage;AccountKey=S4z/D+Yg6mwMis+bs/VpcDLA9yE1iZaYq23shQlRIi2KmM9E7JY8zdZjeAPOPdG3gONHoNDEpsgH6D4cqQ/bsA==;EndpointSuffix=core.windows.net" />
+
+ <add key="TENANT_ID" value="2ebd63a5-bc2f-41dc-9066-4409ed5e5dd4" />
+ <add key="CLIENT_ID" value="ec612854-7abc-457b-808a-5d0c5ba80c57" />
+ <add key="APP_SECRET" value="54)019A7wv+#86l*PQcQWYKu%fd4Dv!@G=VhCiDI5rD+H4BTH" />
+
+ <add key="TANGO_VERSIONS_CONTAINER" value="tango-versions" />
+ <add key="MACHINE_STUDIO_VERSIONS_CONTAINER" value="machine-studio-versions" />
</appSettings>
<!--
For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.