Call a Batch (.bat) File from ASP.NET

The following code will enable you to call a Batch File from ASP.NET / C#.

There are a few steps you must take before this will work.

1. Create a new Login ID on your machine
2. Change the site Application Pool to run under this new ID
3. Give the ID Read/Write Rights to the folder that contains the .bat file 

Code Snippet:

using System.IO; 
using System.Diagnostics;

HttpContext CTX = HttpContext.Current; 
var BatchFile = "YourBatchFile.bat";

var Path = CTX.Server.MapPath("~/YourFolderHere");
ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.WorkingDirectory = Path;
processInfo.FileName = BatchFile;
processInfo.UseShellExecute = true;

Process batchProcess = new Process();
batchProcess.StartInfo = processInfo; batchProcess.Start();

TFS 2010 Integration with Visual Studio 2013

There are times when Visual Studio 2013 does not integrate with TFS 2010.

If you have that issue download the 2010 MSSCCI Provider 32-bit provider at this link.

Then in Visual Studio under Options change the Source Control Plug-in. 

Storing ASP.NET View State in a Flat File or Session

To prevent Invalid view state or 64Bit invalid viewstate issues, and to improve page performance, I have loaded view state in a flat file at times.

Follow These Steps:

1. Add the Class File to your project

3. Have your page Inherit from the View State class (attached .cs file).

 public partial class ViewStateInFlatFile : MyClass.PersistViewStateToFile //Inhert the class that handles view state

4. Setup a scheduled task to delete old view state files. I delete files that are one day old.

using System.IO;
using System.IO.Compression;

namespace MyClass
{
    public class PersistViewStateToFile : System.Web.UI.Page
    {
        public string ViewStatePath = string.Empty;

        public PersistViewStateToFile()
        {
            ViewStatePath = Server.MapPath(@"~\ViewState");
        } 
        protected override void SavePageStateToPersistenceMedium(object state)
        {
            LosFormatter los = new LosFormatter();
            StringWriter sw = new StringWriter();
            los.Serialize(sw, state);

            StreamWriter w = File.CreateText(ViewStateFilePath);
            w.Write(sw.ToString());
            w.Close();
            sw.Close();

        }
        protected override object LoadPageStateFromPersistenceMedium()
        {
            string filepath = ViewStateFilePath;
            // determine the file to access
            if (!File.Exists(filepath))
                return null;
            else
            {
                // open the file
                StreamReader sr = File.OpenText(filepath);
                string viewStateString = sr.ReadToEnd();
                sr.Close();

                // deserialize the string
                LosFormatter los = new LosFormatter();
                return los.Deserialize(viewStateString);
            }
        }
        public string ViewStateFilePath
        {
            get
            {
                if (Session["viewstateFilPath"] == null)
                {
                    var fileName = Session.SessionID + "-" + Path.GetFileNameWithoutExtension(Request.Path).Replace("/", "-") + ".ViewState";
                    var filepath = Path.Combine(ViewStatePath, fileName);
                    Session["viewstateFilPath"] = filepath;
                }

                return Session["viewstateFilPath"].ToString();                          
            }
        }
        public string GetValue(string uniqueId)
        {
            return System.Web.HttpContext.Current.Request.Form[uniqueId];
        }
        /// 
        /// Replace this with BAT Files to delete these View State files.
        /// 
        private void RemoveFilesfromServer()
        {
            try
            {
                //string folderName = Path.Combine(Request.PhysicalApplicationPath, "PersistedViewState");
                string folderName = ViewStatePath;
                DirectoryInfo _Directory = new DirectoryInfo(folderName);
                FileInfo[] files = _Directory.GetFiles();
                DateTime threshold = DateTime.Now.AddDays(-3);
                foreach (FileInfo file in files)
                {
                    if (file.CreationTime <= threshold)
                        file.Delete();
                }
            }
            catch (Exception ex)
            {
                throw new ApplicationException("Removing Files from Server");
            }
        }
        /// 
        /// A GUID is created to store the file names
        /// 
        private string GenerateGUID()
        {
            return System.Guid.NewGuid().ToString("");
        }
    }
}
C# source for View State save to flat file and save to session: 

PersistViewStateToFile.cs (3.45 kb)

PersistViewStateSession.cs (1.23 kb)