Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 会话对象正在本地主机上工作,但在服务器上失败_C#_Asp.net Mvc_Entity Framework_Session - Fatal编程技术网

C# 会话对象正在本地主机上工作,但在服务器上失败

C# 会话对象正在本地主机上工作,但在服务器上失败,c#,asp.net-mvc,entity-framework,session,C#,Asp.net Mvc,Entity Framework,Session,我在MVC5Web应用程序中创建了一个SessionManager类来维护应用程序的会话。此类在本地主机上工作正常,但在服务器上失败。以下是我的SessionManager类代码: public class SessionManager : BaseController { private HttpContext _context; public SessionManager() { //TODO: } public SessionMan

我在MVC5Web应用程序中创建了一个SessionManager类来维护应用程序的会话。此类在本地主机上工作正常,但在服务器上失败。以下是我的SessionManager类代码:

public class SessionManager : BaseController
{
    private HttpContext _context;

    public SessionManager()
    {
        //TODO:
    }
    public SessionManager(HttpContext context)
    {
        _context = context;
    }

    private RAWOnlineDBEntities db = new RAWOnlineDBEntities();

    private string _FromMailID = string.Empty;
    private string _FromPassword = string.Empty;
    private string _CompanyName = string.Empty;
    private string _AdminEmailID = string.Empty;


    public string FromMailID
    {
        get 
        {
            if (_context != null && _context.Session != null)
            {
                if (_context.Session["FromMailID"] == null)
                {
                    _context.Session["FromMailID"] = db.Users.Where(u => u.CompanyID == CompanyID && u.UserID == UserID && u.IsActive == true).Select(table => table.InternalMailID).FirstOrDefault();
                }
            }
            //return _FromMailID = _context.Session["FromMailID"].ToString();   // localhost
            // Server
            return _FromMailID = db.Users.Where(u => u.CompanyID == CompanyID && u.UserID == UserID && u.IsActive == true).Select(table => table.InternalMailID).FirstOrDefault();
        } 
    }

    public string FromPassword
    {
        get
        {
            try
            {
                if (_context != null && _context.Session != null)
                {
                    if (_context.Session["FromPassword"] == null)
                    {
                        _context.Session["FromPassword"] = db.Users.Where(u => u.CompanyID == CompanyID && u.UserID == UserID && u.IsActive == true).Select(table => table.InternalMailIDPassword).FirstOrDefault();
                    }
                }
                _FromPassword = _context.Session["FromPassword"].ToString();
            }
            catch (Exception ex)
            {
                //ErrorSignal.FromCurrentContext().Raise(ex); //ELMAH Signaling
                IsSuccess = false;
                ViewBag.ErrorMessage = "Transaction failed. Please try again. If problem persists, contact system administrator.";
                ViewBag.InfoMessage = "";
                // Handle exception here and Log Error to text file...
                string sLogFilePath = Server.MapPath(@"~/ApplicationFiles/ErrorLog/ErrorLogFile.txt");
                GeneralRepository.LogErrorToFile(ex, sLogFilePath, "FromPassword from session manager");
            }
            return _FromPassword;
        }
    }

    public string CompanyName
    {
        get
        {
            if (_context != null && _context.Session != null)
            {
                if (_context.Session["CompanyName"] == null)
                {
                    _context.Session["CompanyName"] = db.CompanyMasters.Where(u => u.CompanyID == CompanyID && u.IsActive == true).Select(table => table.CompanyName).FirstOrDefault();
                }
            }
            return _CompanyName = _context.Session["CompanyName"].ToString();
        }
    }

    public string AdminEmailID
    {
        get
        {
            if (_context != null && _context.Session != null)
            {
                if (_context.Session["AdminEmailID"] == null)
                {
                    _context.Session["AdminEmailID"] = (from table in db.Users
                                               where table.RoleID == ADMIN_ROLE
                                               && table.IsActive == true
                                               && table.UserName.ToUpper() == "ADMIN"
                                               select table.EmailID).FirstOrDefault();
                }
            }
            return _AdminEmailID = _context.Session["AdminEmailID"].ToString();
        }
    }

}
我在我的控制器动作方法中这样调用这个类

System.Web.HttpContext currentContext = System.Web.HttpContext.Current;
        SessionManager objSessionManager = new SessionManager(currentContext);
StringBuilder MsgBody = MakeMailBodyForReportCreated(objReportTransactionData);
        EmailRepository.SendEmail(objSessionManager.FromMailID, objSessionManager.FromPassword, ToMailAddress, CCMailAddress, MsgSubject, MsgBody.ToString());
这是我的web.config文件

<sessionState mode="InProc" timeout="20"></sessionState>
  <pages validateRequest="false" enableSessionState="true" />
<modules>


  <remove name="Session" />
  <add name="Session" type="System.Web.SessionState.SessionStateModule" />

</modules>


请帮助…

服务器在哪里?如果您使用的是负载平衡环境(群集),则如果不由负载平衡器管理,会话可能会失败。服务器上没有负载平衡。是否通过IIS运行?如果是,请说明windows服务器上IIS?IIS 7的版本。我正在使用ELMAH,我从项目中删除了它的引用,它开始工作。我想这和ELMAH的配置有关。但我不确定。有什么想法吗?服务器在哪里?如果您使用的是负载平衡环境(群集),则如果不由负载平衡器管理,会话可能会失败。服务器上没有负载平衡。是否通过IIS运行?如果是,请说明windows服务器上IIS?IIS 7的版本。我正在使用ELMAH,我从项目中删除了它的引用,它开始工作。我想这和ELMAH的配置有关。但我不确定。有什么想法吗?