97 lines
3.3 KiB
C#
97 lines
3.3 KiB
C#
|
|
using Microsoft.JScript;
|
|
using Microsoft.Win32;
|
|
using System;
|
|
using System.IO;
|
|
using System.Reflection;
|
|
using System.Web;
|
|
using System.Web.Http;
|
|
using System.Web.Mvc;
|
|
using System.Web.Optimization;
|
|
using System.Web.Routing;
|
|
using UFSoft.U8.U8M.Common;
|
|
|
|
namespace UFIDA.U8.Framework.Api
|
|
{
|
|
public class WebApiApplication : HttpApplication
|
|
{
|
|
private readonly string s_u8Root;
|
|
private readonly string s_u8MPath;
|
|
private readonly string s_u8FrameworkPath;
|
|
private readonly string s_u8APIFramework;
|
|
|
|
|
|
public WebApiApplication()
|
|
{
|
|
s_u8Root = GetU8InstallPath();
|
|
s_u8MPath = $@"{s_u8Root}U8M\";
|
|
s_u8FrameworkPath = $@"{s_u8Root}Framework\";
|
|
s_u8APIFramework = $@"{s_u8Root}UFMOM\U8APIFramework\";
|
|
|
|
|
|
}
|
|
|
|
protected void Application_Start()
|
|
{
|
|
AreaRegistration.RegisterAllAreas();
|
|
GlobalConfiguration.Configure(WebApiConfig.Register);
|
|
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
|
|
RouteConfig.RegisterRoutes(RouteTable.Routes);
|
|
BundleConfig.RegisterBundles(BundleTable.Bundles);
|
|
|
|
AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
|
|
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
|
|
|
|
}
|
|
|
|
//private void ConfigureDependencyInjection(HttpConfiguration config)
|
|
//{
|
|
// var builder = new ContainerBuilder();
|
|
// //builder.RegisterType<GMUtil>().As<>();
|
|
|
|
// var container = builder.Build();
|
|
|
|
// config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
|
|
//}
|
|
|
|
|
|
private static string GetU8InstallPath()
|
|
{
|
|
string root;
|
|
var installPath = Registry.LocalMachine.OpenSubKey(GlobalConstDefine.Product_Registry_InstallKey);
|
|
root = installPath == null ? Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase) : installPath.GetValue(string.Empty).ToString();
|
|
return root += @"\";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 缺少程序集全局处理事件
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="args"></param>
|
|
/// <returns></returns>
|
|
private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
|
|
{
|
|
//先在已经加载的程序集中选择
|
|
foreach (var asm in AppDomain.CurrentDomain.GetAssemblies())
|
|
{
|
|
if (args.Name.Equals(asm.FullName))
|
|
return asm;
|
|
}
|
|
|
|
//取未加载的DLL名
|
|
var sAsmName = args.Name.Contains(",") ? $"{args.Name.Substring(0, args.Name.IndexOf(','))}.dll" : $"{args.Name}.dll";
|
|
|
|
//到指定的目录下找
|
|
if (File.Exists(s_u8Root + sAsmName))
|
|
return Assembly.LoadFrom(s_u8Root + sAsmName);
|
|
if (File.Exists(s_u8MPath + sAsmName))
|
|
return Assembly.LoadFrom(s_u8MPath + sAsmName);
|
|
if (File.Exists(s_u8FrameworkPath + sAsmName))
|
|
return Assembly.LoadFrom(s_u8FrameworkPath + sAsmName);
|
|
if (File.Exists(s_u8APIFramework + sAsmName))
|
|
return Assembly.LoadFrom(s_u8APIFramework + sAsmName);
|
|
return null;
|
|
}
|
|
}
|
|
}
|