sharepoint - Sharepoint2013 webpart can't load custom dll from GAC -


i'm trying use third party dll called asptokeninputlib in sharepoint2013 webpart . working while when loaded in bin directory when tried move gac won't work , it's stopped working if load in bin well. error object reference not set instance of object. sharepoint logs shows

system.nullreferenceexception: object reference not set instance of object. @ asptokeninputlib.asptokeninput.onload(eventargs e)

my package manifest file includes

<assemblies> <assembly location="asptokeninputlib.dll" deploymenttarget="globalassemblycache" /> <assembly location="bidsearchwebpart.dll" deploymenttarget="globalassemblycache">   <safecontrols>     <safecontrol assembly="bidsearchwebpart, version=1.0.0.0, culture=neutral, publickeytoken=59049686a9425568" namespace="bidsearchwebpart.visualwebpart1" typename="*" />   </safecontrols> </assembly> 

if remove asptokeninput controls in webpart webpart loads correctly don't think there's problem finding control in gac (i've used process monitor , looking in correct place in gac find control). reason though can't load dll.

any appreciated. thanks!

my ascx.cs files

using system; using system.diagnostics; using system.componentmodel; using system.web.ui.webcontrols; using system.web.ui.webcontrols.webparts; using system.data; using system.data.sqlclient; using system.text; using microsoft.sharepoint; using microsoft.sharepoint.administration; using system.web.script.serialization; using system.linq; using system.collections; using system.collections.generic; using asptokeninputlib;   namespace bidsearchwebpart.visualwebpart1 { [toolboxitemattribute(false)] public partial class bidsearchwebpart : webpart {      private enum columns     {         bidref, bidname, client, area, teamlead     }      private string teamleadsdata, execleadsdata, stagesdata, sectorsdata, servicesdata, gradesdata, costcentresdata, clientsdata, areasdata;      public bidsearchwebpart()     {         teamleadsdata = runsp("uspselectteamleads", "teamlead", "name", connectionstring());         execleadsdata = runsp("uspselectexectechleads", "executivetechnicallead", "name", connectionstring());         stagesdata = runsp("uspselectstages", "stageid", "stagedescsearch", connectionstring());         sectorsdata = runsp("spselectmarketsectors", "sectorid", "mktsector", ccdconnectionstring());         servicesdata = runsp("spselectallservices", "serviceid", "service", ccdconnectionstring());         gradesdata = runsp("uspselectgrades", "gradeid", "gradedesc", connectionstring());         costcentresdata = runsp("uspselectcostcentres", "costcentre", "name", connectionstring());         clientsdata = runsp("spselectallclients", "companyref", "coname", ccdconnectionstring());         areasdata = runsp("uspselectareas", "areaid", "areaname", connectionstring());     }      protected override void oninit(eventargs e)     {         base.oninit(e);         initializecontrol();     }      protected void page_load(object sender, eventargs e)     {         list<string> ddvalues = new list<string>();         if (!page.ispostback)         {             ddvalues.add("greater than");             ddvalues.add("less than");             ddcc.datasource = ddvalues;             ddfv.datasource = ddvalues;             ddcc.databind();             ddfv.databind();         }         btnsearch.click += btnsearch_click;         gvsearchresults.rowdatabound += gvsearchresults_rowdatabound;         titeamlead.datasource = asptokeninput.datasourcetype.dataset;         titeamlead.dataset = teamleadsdata;         tiexectechlead.datasource = asptokeninput.datasourcetype.dataset;         tiexectechlead.dataset = execleadsdata;         tistage.datasource = asptokeninput.datasourcetype.dataset;         tistage.dataset = stagesdata;         tisector.datasource = asptokeninput.datasourcetype.dataset;         tisector.dataset = sectorsdata;         tiservice.datasource = asptokeninput.datasourcetype.dataset;         tiservice.dataset = servicesdata;         tigrade.datasource = asptokeninput.datasourcetype.dataset;         tigrade.dataset = gradesdata;         ticostcentre.datasource = asptokeninput.datasourcetype.dataset;         ticostcentre.dataset = costcentresdata;         ticlient.datasource = asptokeninput.datasourcetype.dataset;         ticlient.dataset = clientsdata;         tiarea.datasource = asptokeninput.datasourcetype.dataset;         tiarea.dataset = areasdata;     }      void btnsearch_click(object sender, eventargs e)     {         //if (string.isnullorempty(txtprojectno.text) && string.isnullorempty(txtprojectname.text) && string.isnullorempty(txtclient.text) && string.isnullorempty(txtkeyword.text))  // nothing if search text boxes blank         //{         //    return;         //} else {         gvsearchresults.pageindex = 0;         dosearch();         //}     }      protected void gvsearchresults_pageindexchanging(object sender, gridviewpageeventargs e)     {         gvsearchresults.pagertemplate = null;         gvsearchresults.pageindex = e.newpageindex;         dosearch();     }      public void dosearch()     {         datatable dt = new datatable();         string = getwhereclause();         if (!string.isnullorempty(where))         {             dt = filltable("spselectbidsearchresults", where);         }          gvsearchresults.datasource = dt;         gvsearchresults.pagesize = 10;         gvsearchresults.pagertemplate = null;         gvsearchresults.databind();     }      private datatable filltable(string storedproc, string where)     {         sqlconnection conn = new sqlconnection(connectionstring());         conn.open();         sqlcommand cmdproject = new sqlcommand(storedproc, conn);         cmdproject.commandtype = commandtype.storedprocedure;         cmdproject.parameters.addwithvalue("@whereclause", where);         sqldataadapter da = new sqldataadapter(cmdproject);         datatable dt = new datatable();          da.fill(dt);          da.dispose();         conn.close();          return dt;     }      private string symbol(string ddtext)     {         if (ddtext.equals("greater than"))         {             return ">";         }         else         {             return "<";         }     }      private string getwhereclause()     {         string = "";         = getwhereforcol(txtbidname.text, "", "bidname", "like", where);         = getwhereforcol(txtdescription.text, "", "description", "like", where);          = getwhereforcol(gettokens(titeamlead), "", "teamlead", "token", where);         = getwhereforcol(gettokens(tiexectechlead), "", "executivetechnicallead", "token", where);         = getwhereforcol(txtconstructioncost.text, ddcc.text, "constructioncost", "numeric", where);         = getwhereforcol(txtfeevalue.text, ddfv.text, "feevalue", "numeric", where);         = getwhereforcol(gettokens(tistage), "", "stage", "token", where);         = getwhereforcol(gettokens(tisector), "", "primarysector", "token", where, "secondarysector");         = getwhereforcol(gettokens(tiservice), "", "primaryservice", "token", where);         = getwhereforcol(gettokens(tigrade), "", "grade", "token", where);         = getwhereforcol(gettokens(ticostcentre), "", "primarycostcentre", "token", where);         = getwhereforcol(gettokens(ticlient), "", "clientref", "token", where);         = getwhereforcol(gettokens(tiarea), "", "area", "token", where);         return where;     }      private string getwhereforcol(string text, string ddtext, string colname, string coltype, string where, string othercol = "")     {         if (!string.isnullorempty(text))         {             if (coltype.equals("like"))             {                 = addtowhere(where, colname + " '%" + text + "%'");             }             else if (coltype.equals("numeric"))             {                 string symbl = symbol(ddtext);                 = addtowhere(where, colname + " " + symbl + " " + text);             }             else if (coltype.equals("token"))             {                 if (!string.isnullorempty(othercol))                 {                     = addtowhere(where, "(" + colname + " in (" + text + ")");                     += " or " + othercol + " in (" + text + "))";                 }                 else                 {                     = addtowhere(where, colname + " in (" + text + ")");                 }             }         }         return where;     }      private string addtowhere(string where, string clause)     {         if (!string.isnullorempty(clause))         {             if (string.isnullorempty(where))             {                 = clause;             }             else             {                 += " , " + clause;             }         }          return where;     }      private string gettokens(asptokeninput ti)     {         stringbuilder strtokens = new stringbuilder();         list<asptokeninput.item> items = ti.selecteditems;          foreach (asptokeninput.item item in items)         {             if (strtokens.length > 0)             {                 strtokens.append(", ");             }             strtokens.appendformat("'{0}'", item.id);          }         return strtokens.tostring();     }      public string getspsinglevalue(string spname, string spparamname, string spparamval, string connectionstr)     {         try         {             sqlconnection conn = new sqlconnection(connectionstr);             sqlcommand cmd = new sqlcommand(spname, conn);             cmd.parameters.addwithvalue(spparamname, spparamval);             cmd.commandtype = commandtype.storedprocedure;             conn.open();             string result = cmd.executescalar().tostring();             conn.close();             return result;         }         catch         {             return "";         }     }       void gvsearchresults_rowdatabound(object sender, gridviewroweventargs e)     {         if (e.row.rowtype == datacontrolrowtype.datarow)         {             label l;             datarowview rowview = (datarowview)e.row.dataitem;             string bidref = rowview["bidref"].tostring();             string teamleadid = rowview["teamlead"].tostring();              string teamleadname = getsinglerecord("uspselectteamleadbyid", connectionstring(), "@teamlead", teamleadid);             l = (label)e.row.cells[(int)columns.teamlead].findcontrol("lblteamlead");             l.text = teamleadname;              if (sitecollectionexists(bidref))             {                 l = (label)e.row.cells[(int)columns.bidref].findcontrol("lblbidref");                 hyperlink hl = new hyperlink();                 hl.navigateurl = "http://bidstore.gleeds.net/bids/" + bidref;                 hl.text = bidref;                 e.row.cells[(int)columns.bidref].controls.add(hl);                 l.text = "";             }         }     }      //check if site collection exists @ given web application     private static bool sitecollectionexists(string bidnr)     {         bool returnval = false;          var r = spcontext.current.site.webapplication.sites.where(site => site.url.contains(bidnr));         foreach (spsite s in r)         {             returnval = true;         }          return returnval;     }      public string teamleads()     {         return teamleadsdata;     }      public string executivetechnicalleads()     {         return execleadsdata;     }      public string stages()     {         return stagesdata;     }      public string sectors()     {         return sectorsdata;     }      public string services()     {         return servicesdata;     }      public string grades()     {         return gradesdata;     }      public string costcentres()     {         return costcentresdata;     }      public string clients()     {         return clientsdata;     }      public string areas()     {         return areasdata;     }      public string getsinglerecord(string spname, string connectionstr, string param, string value)     {         sqlconnection conn = new sqlconnection();         sqlcommand command = new sqlcommand(spname, conn);         conn = new sqlconnection(connectionstr);         command.commandtype = commandtype.storedprocedure;         command.parameters.addwithvalue(param, value);         command.connection = conn;          conn.open();         string result = command.executescalar().tostring();         conn.close();         return result;     }      public string runsp(string spname, string idcol, string namecol, string connectionstr)     {         arraylist data = new arraylist();          sqlconnection conn = new sqlconnection();         sqlcommand command = new sqlcommand(spname, conn);         conn = new sqlconnection(connectionstr);         command.commandtype = commandtype.storedprocedure;         command.connection = conn;          conn.open();         sqldatareader dr = command.executereader();          while (dr.read())         {             data.add(new tokeninputrow(dr[idcol].tostring(), dr[namecol].tostring()));         }          conn.close();          return serialize(data);     }       private static string serialize(object obj)     {         javascriptserializer ser = new javascriptserializer();         return ser.serialize(obj);     }      private string connectionstring()     {         return "data source=10.2.40.17;initial catalog=bidopening;persist security info=true;user id=gtl_bidopening_user;password=g@rd3n12";     }      private string ccdconnectionstring()     {         return "data source=10.2.40.17;initial catalog=ccdlive;persist security info=true;user id=gtl_ccdlive_user;password=g@rd3n";     } }  public class tokeninputrow {     public string id;     public string name;      public tokeninputrow(string _id, string _name)     {         id = _id;         name = _name;     } }  } 

i able step through page load, can't step asptokeninput dll. code fails after page load has finished. ti controls included in .ascx file

 %@ register tagprefix="ati" assembly="asptokeninputlib" namespace="asptokeninputlib" %> ati:asptokeninput id="titeamlead" runat="server" hinttext="start typing teamlead..." /> 


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -