How to open a local htm file on the server
===

Our application saves contract files to C:\Contracts. The contracts are filled out on an aspx web page, and upon submission the contract is saved to that directory as a .htm file, and the filepath to the contract is stored in an OnlineCustomerDocuments object, which is then sent to the database. Later on, we want to be able to open these contracts, in the web browser through the web app. The customers are displayed in a gridview, with contract links in each row.

This is the code I have right now to open the contract:

     protected void grdWebs_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int intId = 0;
            Web objWeb = new Web();
            try
            {
                string strContractFilePath;
                GridViewRow row1;
                List<OnlineCustomerDocuments> lstOnlineCustomerDocuments;
                OnlineCustomerDocuments contract;
                string strContractpath;
                switch (e.CommandName)
                {
                    case "View_Details":
                    //GridViewRow row = (GridViewRow) (((Button)e.CommandSource).NamingContainer);
                      GridViewRow row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
                    intId = Convert.ToInt32(grdWebs.DataKeys[row.RowIndex].Value.ToString());
                    Response.Redirect("DetailsForm.aspx?Id=" + intId.ToString(), false);
                    break;
                case "Print_Contract":                    
                    strContractFilePath = ConfigurationManager.AppSettings["CustomerContractsDirectory"].ToString();
                    row1 = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
                    intId = Convert.ToInt32(grdWebs.DataKeys[row1.RowIndex].Value.ToString());
                    objWeb = QDServiceHelper._QDClient.GetDetails(intId);
                    lstOnlineCustomerDocuments = QDServiceHelper._QDClient.GetOnlineCustomerDocumentsByID(intId);
                    contract = lstOnlineCustomerDocuments.ElementAt(0);
                    strContractpath = contract.DocumentFileName;                    
                    System.Diagnostics.Process.Start(strContractpath);                    
                    break;                
                default:
                    break;            
                }
            }
            catch (Exception ex)
            {
                log.Error(ex.ToString());
            }           
        }

Button to launch contract:

     <asp:LinkButton ID="btnPrintContract" runat="server"  CommandName="Print_Contract" Text="View Signed Contract" width="100px" CssClass ="GeneralHyperlink"></asp:LinkButton>

Basically, The selected row is grabbed, and the contract for that customer id is grabbed. When testing the application on my local machine, the contract is created, the db is updated properly, and the contract is able to be opened. However when I publish the app to the web server, I am unable to open the contract. The code executes up to Process.start(), but then nothing happens. I have checked file paths, and that the link button's __doPostBack is correct. The only thing that i can think of is that there is some permission issue. If that's the case would it be better to try and figure out how to grant those permissions using asp.net impersonation etc or is there a better way? 