230 lines
8.9 KiB
C#
230 lines
8.9 KiB
C#
|
|
using Microsoft.AspNetCore.Builder;
|
|||
|
|
using Microsoft.AspNetCore.DataProtection;
|
|||
|
|
using Microsoft.AspNetCore.Hosting;
|
|||
|
|
using Microsoft.AspNetCore.Http;
|
|||
|
|
using Microsoft.AspNetCore.HttpsPolicy;
|
|||
|
|
using Microsoft.AspNetCore.Mvc;
|
|||
|
|
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
|||
|
|
using Microsoft.Extensions.Configuration;
|
|||
|
|
using Microsoft.Extensions.DependencyInjection;
|
|||
|
|
using Microsoft.Extensions.FileProviders;
|
|||
|
|
using Microsoft.Extensions.Hosting;
|
|||
|
|
using Microsoft.Extensions.Logging;
|
|||
|
|
using Microsoft.Extensions.Options;
|
|||
|
|
using Microsoft.OpenApi.Models;
|
|||
|
|
using Newtonsoft.Json.Serialization;
|
|||
|
|
using Senparc.CO2NET;
|
|||
|
|
using Senparc.CO2NET.AspNet;
|
|||
|
|
using Senparc.Weixin;
|
|||
|
|
using Senparc.Weixin.Cache.CsRedis;
|
|||
|
|
using Senparc.Weixin.Entities;
|
|||
|
|
using Senparc.Weixin.RegisterServices;
|
|||
|
|
using Senparc.Weixin.WxOpen;
|
|||
|
|
using Serilog;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.IO;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Reflection;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
|
|||
|
|
namespace YBDevice.Api
|
|||
|
|
{
|
|||
|
|
public class Startup
|
|||
|
|
{
|
|||
|
|
public Startup(IConfiguration configuration)
|
|||
|
|
{
|
|||
|
|
Configuration = configuration;
|
|||
|
|
// <20><><EFBFBD><EFBFBD>serilog
|
|||
|
|
Log.Logger = Nirvana.Common.LogFactory.GetLogger(configuration);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public IConfiguration Configuration { get; }
|
|||
|
|
|
|||
|
|
// This method gets called by the runtime. Use this method to add services to the container.
|
|||
|
|
public void ConfigureServices(IServiceCollection services)
|
|||
|
|
{
|
|||
|
|
services.AddSession();//ʹ<><CAB9>Session<6F><6E>ʵ<EFBFBD><CAB5>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Mvc ֮ǰ<D6AE><C7B0>
|
|||
|
|
services.AddDataProtection().PersistKeysToFileSystem(new DirectoryInfo(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "DataProtection"));
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
|
|||
|
|
services.AddCors(options =>
|
|||
|
|
{
|
|||
|
|
options.AddPolicy("cors",
|
|||
|
|
builder =>
|
|||
|
|
builder
|
|||
|
|
.AllowAnyOrigin()
|
|||
|
|
.AllowAnyHeader()
|
|||
|
|
.AllowAnyMethod()
|
|||
|
|
);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
services.AddControllersWithViews()
|
|||
|
|
.AddNewtonsoftJson(options =>
|
|||
|
|
{
|
|||
|
|
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; //<2F><><EFBFBD>ڸ<EFBFBD>ʽ<EFBFBD><CABD>
|
|||
|
|
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
|
|||
|
|
})// ֧<><D6A7> NewtonsoftJson
|
|||
|
|
.SetCompatibilityVersion(CompatibilityVersion.Latest);
|
|||
|
|
|
|||
|
|
// ע<><D7A2>Swagger<65><72><EFBFBD><EFBFBD>
|
|||
|
|
services.AddSwaggerGen(c =>
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>Ϣ
|
|||
|
|
c.SwaggerDoc("v1", new OpenApiInfo
|
|||
|
|
{
|
|||
|
|
Title = "<22>ӿ<EFBFBD><D3BF>ĵ<EFBFBD>",
|
|||
|
|
Version = "v1",
|
|||
|
|
Description = "liuzl"
|
|||
|
|
});
|
|||
|
|
// ʹ<>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD>ȡxml<6D>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>·<EFBFBD><C2B7>
|
|||
|
|
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
|
|||
|
|
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
|
|||
|
|
// <20><><EFBFBD><EFBFBD>xmlע<6C><D7A2>. <20>÷<EFBFBD><C3B7><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>ͣ<EFBFBD>Ĭ<EFBFBD><C4AC>Ϊfalse.
|
|||
|
|
c.IncludeXmlComments(xmlPath, true);
|
|||
|
|
//<2F><><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ŀ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫָ<D2AA><D6B8>
|
|||
|
|
c.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "YBDevice.Entity.xml"));
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
// Add CookieTempDataProvider after AddMvc and include ViewFeatures.
|
|||
|
|
services.AddSingleton<ITempDataProvider, CookieTempDataProvider>();
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IIS<49>ϣ<EFBFBD><CFA3><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
|||
|
|
services.Configure<IISServerOptions>(options => options.AllowSynchronousIO = true);
|
|||
|
|
|
|||
|
|
#region ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡIP
|
|||
|
|
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
|
|||
|
|
Nirvana.Common.MyHttpContext.serviceCollection = services;
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
services.AddSenparcWeixinServices(Configuration);//Senparc.Weixin ע<>ᣨ<EFBFBD><E1A3A8><EFBFBD>룩
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
|||
|
|
public void Configure(IApplicationBuilder app, IWebHostEnvironment env,
|
|||
|
|
IOptions<SenparcSetting> senparcSetting, IOptions<SenparcWeixinSetting> senparcWeixinSetting)
|
|||
|
|
{
|
|||
|
|
//ʹ<><CAB9> Session
|
|||
|
|
app.UseSession();
|
|||
|
|
|
|||
|
|
//<2F>쳣<EFBFBD><ECB3A3><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><D0BC><EFBFBD>
|
|||
|
|
app.UseMyExceptionHandler();
|
|||
|
|
|
|||
|
|
|
|||
|
|
if (env.IsDevelopment())
|
|||
|
|
{
|
|||
|
|
app.UseSwagger();
|
|||
|
|
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "YBDevice.Api v1"));
|
|||
|
|
}
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>body<64><79><EFBFBD><EFBFBD>
|
|||
|
|
app.Use(next => context =>
|
|||
|
|
{
|
|||
|
|
context.Request.EnableBuffering();
|
|||
|
|
return next(context);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
app.UseHttpsRedirection();
|
|||
|
|
app.UseStaticFiles();
|
|||
|
|
//app.UseStaticFiles(new StaticFileOptions {
|
|||
|
|
// FileProvider = new PhysicalFileProvider(Path.Combine(env.ContentRootPath, "wwwroot")),
|
|||
|
|
// RequestPath = "/"
|
|||
|
|
//});
|
|||
|
|
|
|||
|
|
app.UseRouting();
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><D0BF><EFBFBD><EFBFBD><EFBFBD>cors<72><73><EFBFBD><EFBFBD>ConfigureServices<65><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õĿ<C3B5><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//ע<>⣺UseCors<72><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UseRouting<6E><67>UseEndpoints֮<73><D6AE>
|
|||
|
|
app.UseCors("cors");
|
|||
|
|
|
|||
|
|
#region <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
var registerService = app.UseSenparcGlobal(env, senparcSetting.Value, globalRegister =>
|
|||
|
|
{
|
|||
|
|
#region CO2NET ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>ʹ<EFBFBD><CAB9>Redis<69><73><EFBFBD>棨<EFBFBD><E6A3A8><EFBFBD>裬<EFBFBD><E8A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
string redisConfigurationStr = UseRedis(senparcSetting.Value);
|
|||
|
|
/* ˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* 1<EFBFBD><EFBFBD>Redis <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Config.SenparcSetting.Cache_Redis_Configuration <EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ע<EFBFBD>ᣬ<EFBFBD>粻<EFBFBD><EFBFBD>Ҫ<EFBFBD>ģ<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
/* 2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>·<EFBFBD> SetConfigurationOption <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Redis <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
|||
|
|
*/
|
|||
|
|
Senparc.CO2NET.Cache.CsRedis.Register.SetConfigurationOption(redisConfigurationStr);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>»<EFBFBD><C2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ Redis
|
|||
|
|
Senparc.CO2NET.Cache.CsRedis.Register.UseKeyValueRedisNow();//<2F><>ֵ<EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
#region ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>裬<EFBFBD><EFBFBD><EFBFBD>飩
|
|||
|
|
|
|||
|
|
globalRegister.RegisterTraceLog(ConfigTraceLog);//<2F><><EFBFBD><EFBFBD>TraceLog
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
}, true)
|
|||
|
|
.UseSenparcWeixin(senparcWeixinSetting.Value, weixinRegister =>
|
|||
|
|
{
|
|||
|
|
#region <EFBFBD>Ż<EFBFBD><EFBFBD>棨<EFBFBD><EFBFBD><EFBFBD>裬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
|||
|
|
//ע<>⣺<EFBFBD><E2A3BA><EFBFBD><EFBFBD>ʹ<EFBFBD>÷DZ<C3B7><C7B1>ػ<EFBFBD><D8BB>棬<EFBFBD><E6A3AC><EFBFBD><EFBFBD>ִ<EFBFBD>б<EFBFBD><D0B1><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>н<EFBFBD><D0BD><EFBFBD>ע<EFBFBD>ᡱ<EFBFBD><E1A1B1><EFBFBD>쳣
|
|||
|
|
//<>ŵ<EFBFBD> Redis <20><><EFBFBD>棬<EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>ע<EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD>뱣֤<EBB1A3><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״<EFBFBD><D7B4><EFBFBD>
|
|||
|
|
weixinRegister.UseSenparcWeixinCacheCsRedis();//CsRedis
|
|||
|
|
// weixinRegister
|
|||
|
|
#endregion
|
|||
|
|
//#region ע<>ṫ<EFBFBD>ں<EFBFBD>
|
|||
|
|
//weixinRegister.RegisterMpAccount(senparcWeixinSetting.Value, "ybhdmob")// DPBMARK_END
|
|||
|
|
//#endregion
|
|||
|
|
|
|||
|
|
#region ע<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// .RegisterWxOpenAccount(senparcWeixinSetting.Value, "ybhdmobwxopen")
|
|||
|
|
#endregion
|
|||
|
|
// ;
|
|||
|
|
});
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
app.UseAuthorization();
|
|||
|
|
|
|||
|
|
app.UseSession();
|
|||
|
|
|
|||
|
|
app.UseEndpoints(endpoints =>
|
|||
|
|
{
|
|||
|
|
endpoints.MapControllerRoute(
|
|||
|
|
name: "default",
|
|||
|
|
pattern: "{controller=Home}/{action=Index}/{id?}"
|
|||
|
|
);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20><><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><C5B8><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>裩
|
|||
|
|
/// </summary>
|
|||
|
|
private void ConfigTraceLog()
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪDebug״̬ʱ<CCAC><CAB1>/App_Data/WeixinTraceLog/Ŀ¼<C4BF>»<EFBFBD><C2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>е<EFBFBD>API<50><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ȫ<EFBFBD>ֵ<EFBFBD>IsDebug<75><67>Senparc.CO2NET.Config.IsDebug<75><67>Ϊfalse<73><65><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>true<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>Ϊtrue
|
|||
|
|
Senparc.CO2NET.Trace.SenparcTrace.SendCustomLog("ϵͳ<CFB5><CDB3>־", "ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>");//ֻ<><D6BB>Senparc.Weixin.Config.IsDebug = true<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
|
|||
|
|
|
|||
|
|
//ȫ<><C8AB><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>¼<EFBFBD>ص<EFBFBD>
|
|||
|
|
Senparc.CO2NET.Trace.SenparcTrace.OnLogFunc = () =>
|
|||
|
|
{
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>WeixinException<6F><6E><EFBFBD>쳣ʱ<ECB3A3><CAB1><EFBFBD><EFBFBD>
|
|||
|
|
WeixinTrace.OnWeixinExceptionFunc = ex =>
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ÿ<EFBFBD>δ<EFBFBD><CEB4><EFBFBD>WeixinExceptionLog<6F><67><EFBFBD><EFBFBD>Ҫִ<D2AA>еĴ<D0B5><C4B4><EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա -- DPBMARK Redis
|
|||
|
|
var eventService = new EventService();
|
|||
|
|
eventService.ConfigOnWeixinExceptionFunc(ex); // DPBMARK_END
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// <20>жϵ<D0B6>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> Redis<69><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><DEB8><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>жϣ<D0B6>
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="senparcSetting"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private string UseRedis(SenparcSetting senparcSetting)
|
|||
|
|
{
|
|||
|
|
string redisConfigurationStr = senparcSetting.Cache_Redis_Configuration;
|
|||
|
|
return redisConfigurationStr;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|