05
2018
01

ASP.NET MVC基础知识(持续添加)

一、Controller中返回File类别

protected internal virtual FileStreamResult File(Stream fileStream, string contentType, string fileDownloadName);

FileStreamResult File(Stream fileStream, string contentType);


区别: 如果加fileDownloadName 返回后,则浏览器直接下载contentType类别文件。

           如是不加fileDownloadName则返回后,则浏览器根据类别做相应动作(jpg则展示,exe则直接打开)



==========================时间线====2018-05-17================================================================


二、ASP.NET MVC 项目使用StateServer模式保存Session数据

工程项目中Web.Config配置文件中,一般默认使用

<sessionState mode="InProc" timeout="120">

</sessionState>


但是此模式有一个缺点, 就是Session的数据是保存在IIS站点的进程中, IIS为了提高站点性能,就会不定时的重启站点,,那么就会使Session丢失, 所以当我们在代码中进行设置时,当失效时间过长以后,就会不起作用了.


所以为了解决这个问题,我们可以使用StateServer模式保存Session数据


1 准备工作本地或者部署的机器上要手动打开Asp.Net状态会话服务


blob.png


blob.png



端口默认为42424  Server服务器,可以打开注册表查看确认一下


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state \Parameters


blob.png


2 修改Web.Config配置文件

    <system.web>
     <sessionState mode="StateServer"
      stateConnectionString="tcpip=127.0.0.1:42424"
      cookieless="false"
      timeout="120"/>
    </system.web>



stateConnectionString 这是连接属性, 使用TCPIP协议 在目标服务器IP地址(一般默认本机就可以)加端口

cookieless  是否使用Cookis保存,这里否.

timeout  设置超时时限(每分钟)


3 解决 "当会话状态模式为“StateServer”或“SQLServer”时,不允许使用无法序列化的对象或 MarshalByRef 对象"

  

将需要保存到Session的对象实体类上面添加[Serializable]


  [Serializable]   
    public class CurrentUser
    {
    }




« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。