做多服务器集群的时候,需要处理session。

一般两种处理方法,

第一,无session,就是不用session,不用session的话自然没有问题

第二,集中化session,所有session集中放在redis种。这样也没有问题

 

记录一下集中化session

首先引用包

Microsoft.AspNetCore.Session
Microsoft.Extensions.Caching.Redis.Core

 在startup中添加中…

这个功能很有意思。直接引用dll即可以浏览页面。

方法很简单,要被共享的功能单独写成一个.net core的webapplication

 

在另外一个.net core的webapplication中引用上面的dll,切记不要忘掉PrecompiledViews

之后在使用共享UI的dll应用中,startup中添加如下代码即可

 public void ConfigureServices(IServiceCollection services…

我在这里主要用来监控每个页面的执行时间

    public class VisitLogFilter : IActionFilter
    {
        private const string DURATION = "DURATION";

        public void OnActionExecuted(ActionExecutedContext context)
        {

            var stopwach = context.RouteData.Values[DURATION] as Stop…

当程序出现错误的时候将会调用

    public class ExceptionFilter : IExceptionFilter
    { 
        public void OnException(ExceptionContext context)
        { 
            var url = context.HttpContext.Request.Host   context.HttpContext.Request.Path;

            LogHelper.Error(url);
           …

Console程序中 中文乱码 

引用包

System.Text.Encoding.CodePages

在程序开头调用

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

 

项目发布到ubuntu上

命令行定位到web项目目录

dotnet  publish -r ubuntu.16.04-x64


.net中的session需要添加引用nuget包

Microsoft.AspNetCore.Session

Session 是基于 IDistributedCache 构建的,所以必须引用一种 IDistributedCache 的实现,ASP.NET Core 提供了多种 IDistributedCache 的实现,如内存、数据库、redis等。所以也需要引用对应的nuget包,一种就可以

Microsoft.Extensions.Caching.Memory
Mic…

我做东西喜欢从最简单开始。这样方便梳理每个细节。今天弄个.net core的站点试试。

开发工具vs2017,新建项目 .net core 下的 asp.net core web application 

.net framework 选择最高的4.6.1 创建一个空的站点

 

空网站已经引用了两个包

Microsoft.ApplicationInsights.AspNetCore
Microsoft.AspNetCore

删除Startup自带的代码文…

appsettings.json

{
  "option1": "value1_from_json",
  "option2": 2,

  "subsection": {
    "suboption1": "subvalue1_from_json"
  },
  "wizards": [
    {
      "Name": "Gandalf",
      "Age": "1000"
    },
    {
      "Name": "Harry",
      "Age": "17"
    }
  ]
}

服务器是 win2008 r2 iis 7.5

开发用的mvc5

一直报错 


重新注册

%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i

各种折腾都不行,抓狂了  


最后居然是

添加 global.asax解决问题. 

IIS里面限制,需要做调整

位置在 

IIS-->Request Filtering-->Edit Feature Settings

修改Maximum allowed content length

默认值是30M