Okay weird thing going on here. I built a form running in the layouts folder that writes to a custom list. Everything appeared to be working as planned. However, after a few submissions I stumbled up errors when trying to go into list settings, create a view, etc.. of the custom list. If I recyle the app pool I can access all those pages again.
Code:
public partial class IdeaInventory : System.Web.UI.Page { protected override void OnPreInit(EventArgs e) { base.OnPreInit(e); base.MasterPageFile = SPContext.Current.Web.MasterUrl; } protected override void OnInit(EventArgs e) { base.OnInit(e); btnSubmit.Click += new EventHandler(btnSubmit_Click); } protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { this.CheckCustomRights(); PopulateCheckBoxes(); } } private void PopulateCheckBoxes() { //populate check box lists SPSite mySite = new SPSite(SPContext.Current.Site.ID); SPWeb myWeb = mySite.OpenWeb("/members/leadership/ts/"); SPList ideaInventory = myWeb.Lists["Idea Inventory"]; //strategic fit column SPField sf = ideaInventory.Fields["Strategic Fit"]; SPFieldMultiChoice strategicFit = (SPFieldMultiChoice)sf; for (int item = 0; item < strategicFit.Choices.Count; item++) { cblFit.Items.Add(new ListItem(strategicFit.Choices[item], strategicFit.Choices[item])); } //project type column SPField pt = ideaInventory.Fields["Project Type"]; SPFieldMultiChoice projectType = (SPFieldMultiChoice)pt; for (int item = 0; item < projectType.Choices.Count; item++) { cblType.Items.Add(new ListItem(projectType.Choices[item], projectType.Choices[item])); } mySite.Close(); myWeb.Close(); mySite.Dispose(); myWeb.Dispose(); } private void CheckCustomRights() { bool userCheckedForCustomLogic = false; //write here a custom logic to check if user has enough rights to access application page //if yes, set userCheckedForCustomLogic to true; SPGroup spgOwners = SPContext.Current.Web.Groups["Net Owners"]; SPGroup spgMembers = SPContext.Current.Web.Groups["Net Members"]; if (spgOwners.ContainsCurrentUser || spgMembers.ContainsCurrentUser) userCheckedForCustomLogic = true; if (!userCheckedForCustomLogic) { Microsoft.SharePoint.Utilities.SPUtility.HandleAccessDenied(new UnauthorizedAccessException()); } } protected void btnSubmit_Click(object sender, EventArgs e) { // SPWeb mySite = SPContext.Current.Web; // SPListItemCollection listItems = mySite.Lists["Idea Inventory"].Items; // Response.Write(mySite); SPSite mySite = new SPSite(SPContext.Current.Site.ID); SPWeb myWeb = mySite.OpenWeb("/members/leadership/ts/"); // Response.Write(refWeb); SPListItemCollection listItems = myWeb.Lists["Idea Inventory"].Items; myWeb.AllowUnsafeUpdates = true; SPListItem item = listItems.Add(); SPFieldMultiChoiceValue sfvalue = new SPFieldMultiChoiceValue(); foreach (ListItem relevance in cblFit.Items) { if (relevance.Selected) sfvalue.Add(relevance.Text); } item["Strategic Fit"] = sfvalue; SPFieldMultiChoiceValue ptvalue = new SPFieldMultiChoiceValue(); foreach (ListItem type in cblType.Items) { if (type.Selected) ptvalue.Add(type.Text); } item["Project Type"] = ptvalue; item["Product Idea"] = txtIdea.Text; item["Title"] = txtIdea.Text; item["Full Name"] = txtName.Text; item["Date Created"] = DateTime.Today; //item["Project Type"] = cblType.SelectedItem; item["Short Description"] = txtDescription.Text; item["Idea Sponsors"] = txtSponsors.Text; //item["Strategic Fit"] = cblFit.Text; item["Success Factors"] = txtFactors.Text; item["Product Markets"] = txtMarket.Text; item["Other Considerations"] = txtConsiderations.Text; item.Update(); mySite.Close(); myWeb.Close(); mySite.Dispose(); myWeb.Dispose(); Panel1.Visible = false; ltlResult.Text = "Thank you for your idea!"; } }