Arxius de la categoria: Desenvolupament de SharePoint

Una raó per a "un o més camp tipus no està instal·lat correctament”

Jo estava fent un petit pessigar ahir a un element web que fa una consulta CAML contra una llista.  Vaig fer el canvi, desplegar-lo i se'n colpien amb un error:

S'ha produït un error inesperat en les tres dia Outlook previsió element web. Contacteu amb l'administrador del sistema. Un o més tipus de camp no estan instal·lats correctament. Aneu a la pàgina de configuració de llista suprimir aquests camps.

Que em enfrontava un altre assumpte oddball abans perquè jo no connectar immediatament meva consulta CAML amb l'error que SharePoint va informar a mi.  Vaig fer una ràpida cerca bing i i Hem trobat aquest útil bloc per Sandeep Nahta  (http://snahta.blogspot.com/2009/01/one-or-more-field-types-are-not.html).

Heus aquí la consulta dolent:

consulta.Consulta ="<On><I><Neq><FieldRef nom = "Abbr" /><Tipus de valor = "Text">SFNY</Valor><FieldRef nom = "Abbr" /><Tipus de valor = "Text">SFIS</Valor></Neq></I></On>";

Aquí es fixa:

consulta.Consulta ="<On><I><Neq><FieldRef nom = "Abbr" /><Tipus de valor = "Text">SFNY</Valor></Neq><Neq><FieldRef nom = "Abbr" /><Tipus de valor = "Text">SFIS</Valor></Neq></I></On>";

Així, la moralitat de la història és: Assegureu-vos que el seu CAML és correcta o vostè pot obtenir un error oddball.

Subscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

</final>

SharePoint 2010 Solució de ple en el «desplegament” L'estat

He utilitzat el PowerShell per implementar una solució d'un conjunt de servidors del SharePoint (h/t:  Corey Roth i el seu entrada de blog). 

Després vaig anar a l'administració central, accedir a escenes de sistema i llavors "Gestionar solucions de granja" per desplegar-lo a la granja i a la meva (lleugera) consternació, es posava de ple en el «desplegament».

He vist aquest tema sorgeixen moltes vegades en els fòrums MSDN, Així que estava molt nerviós sobre això.  He buscat una mica i Hem trobat aquest article útil (per una persona aparentment no atribuïdes de http://www.resolutionsnet.co.uk/).  Anul·lava la feina de disposició i quan feia clic en la solució, em deia que ho havia desplegat amb èxit la solució a tres dels quatre servidors del conjunt.

Vaig anar al servidor errant, el servei de temporitzador d'aturava i el reprenia.  Servidor de Windows realment em va dir que el servei no ha respost a l'ordre, Així que em diu que era malalt.

Aquesta vegada, Quan tornava a l'administració central, Vaig ser capaç de desplegar amb cap problema.

Esperem que aquesta mica d'informació n'ajudarà alguns en un compromís un dels dies.

</final>

Subscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

Error del dia: "No es pot afegir l'assemblat especificat a la GAC”

He estat lluitant una mica amb visual studio 2010 en un un solució de sp2010 i estava aconseguint aquest error:

Occured d'error en el pas de desplegament "Afegir una solució": Error: No es pot afegir l'assemblat especificat a la memòria cau d'assemblat global: YourAwesomeDLLThat IAmJustNotGoingToInstallRightNow.dll

Vaig anar a la GAC propi (c:\windowsassembly) per tractar de treure i tenia un error "arxivar en ús".

Vaig fer efectius, Gairebé descarregava Sysinternals, Em vaig aturar el servei de temporitzador en serveis... finalment, Jo només tancat i es reobre visual studio propi i era finalment capaç de tancar-lo.

</final>

Subscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

Ràpid i fàcil: Depuració VS 2010 Implementació

Estudi Visual 2010 informa dels errors dur-a-depuració durant desplegament algunes vegades.  Una manera ràpida i fàcil de fer alguns depuració molt aspre és llençar el seu propi nom excepcions.  Estudi Visual-los mostrarà a la consola de sortida.

Considerar aquesta mica de codi:

image

Si aquesta característica està ambientat a una aplicació web, lloc serà nul.  Si prova i una propietat del lloc de referència, aconseguirà l'error ambigu:

Occured d'error en el pas de desplegament "Afegir una solució": Referència de l'objecte no definit com a una instància d'un objecte.

No obstant això, si tira una nova excepció i passar una corda per al constructor, aconsegueix un missatge una mica més útil:

image

És una tècnica cru, però bastant ràpid i fàcil.

</final>

Subscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

FeatureActivated treball de temporitzador i característica d'àmbit

He estat treballant amb algun codi que algú passava per a mi per a una feina del temporitzador.  No havia proporcionà el codi d'activació present tret així havia d'escriure-ho, per descomptat.  Jo aprofitava Entrada de blog famós de Andrew Connell sobre el tema.

Estic utilitzant Visual Studio 2010 i desplegament continuava fallant amb un error "Error ocorria al pas de desplegament"Afegeix solució": Referència objecte no definit com a una instància d'un objecte.»

Jo estava prenent el seu codi massa literal.  Jo estava àmbit el tret el nivell d'aplicació web, com es Mostra:

image

Com a resultat, les propietats que s'envien a l'auricular són de l'aplicació web, no una col·lecció de llocs.  Al final, el codi s'assembla a això:

públic invalidar FeatureActivated nul(Propietats SPFeatureReceiverProperties)
{

    // No facis el següent amb les característiques web app amb l'àmbit, Això condueix a la desesperació somriure
    // Lloc SPSite = propietats.Feature.Parent com SPSite;

    L'SPWebApplication wa = propietats.Feature.Parent com a el SPWebApplication;

    Si (WA = = null) llançar nova excepció("webapp2 és nul".);

    foreach (SPJobDefinition treball en wa.JobDefinitions)
    {

        Provi
        {
            Si (feina.Nom = = List_JOB_NAME)

                feina.Suprimir();
        }
        trampa (E d'excepció)
        {
            llançar nova excepció("marcador 2");
        } // agafar e d'excepció
    }

    // instal·lar la feina

    WeatherForecastTimerJob weatherForecastTimerJob =
        WeatherForecastTimerJob nou(List_JOB_NAME, WA);

    SPMinuteSchedule horari = nova SPMinuteSchedule();
    horari.BeginSecond = 0;
    horari.EndSecond = 59;
    horari.Interval = 5;
    weatherForecastTimerJob.Schedule = horari;
    weatherForecastTimerJob.Update();

}

La clau per emportar és que quan el tret d'àmbit d'un app de webs, el que passa al seu auricular tret per SharePoint SPFeatureReceiverProperties ha paràmetres nivell de web app.  Antiga entrada del bloc de Andrew assumeix que està ambientat a la col·lecció de llocs.

</final>

Subscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

On és Microsoft.SharePoint.ApplicationPages.Administration.dll?

Que es va lliurar un projecte d'estudi visual que fa referència a Microsoft.SharePoint.ApplicationPages.Administration.dll.  Em prenia una mica mentre per trobar el pensament i em vols compartir.  En el meu entorn, es troba a:

c:\programa filescommon comunesMicrosoft sharedweb server extensions14configadminbin

</final>

Subscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

Projecte de CodePlex – SP2010 Explorer

Com a part d'un continu esforç per aprendre els detalls tècnics de nivell baixes de SharePoint 2010, He creat un "Explorador de SharePoint"tipus d'eina.  La idea no és nova.  He utilitzat aquest projecte més que una vegada: http://sharepointexplorer.codeplex.com/.  La meva idea és crear una versió de SharePoint que utilitza connectat elements web per mostrar tots els detalls de baix nivell que pot proporcionar el model d'objecte. 

Aquest bloc serveix com tant un anunci del projecte, així com una crida per a voluntaris.  Si estàs interessat en treballar en aquest projecte, Deixi'm saber via correu electrònic (Galvin.Paul@gmail.com) i treballarem.

Aquí és el projecte: http://sp2010explorer.codeplex.com/

</final>

Subscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

Treballant amb TreeNodeBinding en el Control ASP.NET Treeview

He estat treballant en el que espero serà un aviat-alliberat CodePlex projecte que proporciona una mica bonic integrat d'elements web parlant-se mútuament mitjançant connexions proveïdor/consumidor amb la finalitat de descobrir un lloc del SharePoint sota les cobertes.  (Això sens dubte s'ha fet abans, però aquest és un projecte d'aprenentatge tant com qualsevol altra cosa).  Aquest pretén ser un reemplaçament per a la vista d'Explorador de windows de SharePoint 2010 biblioteques de documents.

El codi té el recursiu habitual anomenar avall de SPWeb i SPLists d'una partida determinat punt.  L'objecte que fa recórrer tots els que s'acumula una cadena XML que mira alguna cosa com això:

<SiteCollection url =’http://demo2010a:9090′>
 
<web
     títol = "Hola món Sandbox" 
     Plantilla = "un lloc per equips per pressa organitzar, autor, i compartir informació, BLA, BLA, BLA, BLA '>

     <llista
        títol ='BCC_Health_Services_FAQs’
        Plantilla ='CustomList’
       
listid =’http://demo2010a:9090/helloworldsandbox[delim]1e02b001-3cb2-4f17-b63d-7809e86b4174′>
    
</llista>

     <llista
        títol = "BCC_Notifications" 
        Plantilla = "CustomList" 
        listid =’
http://demo2010a:9090/helloworldsandbox[delim]5a5a13d1 - 877c - 41c 0-9063-b9612be80d5e’>
     </llista>

  </web>

</SiteCollection>

Esperar netejar fins que XML abans tot està dit i fet.

Vull, en definitiva, aconseguir que la informació amunt i en un control Treeview.  No és exactament la terra destrossant coses.

El repte que vaig prendre d'aquí es va connectar la vista d'arbre a un control d'origen de dades XML en lloc de construir manualment el meu treenodes com vaig travessar l'arbre.  Feia això en part perquè estic deliberadament fent les coses més difícils sobre mi mateix (Aquest és un projecte d'aprenentatge després de tot) i en part perquè tinc aquesta noció imprecisa que creïn nodes arbre com vaig travessar l'arbre no és una bona idea per al llarg termini.

El problema amb aquest enfocament és que el control Treeview no sap sobre els atributs bons en els nodes interessants com "llista" o "web" així ho demostra aquesta sortida per defecte:

 

image

Que no és útil.  Això és on ajuda a la classe TreeNodeBinding.  Pot utilitzar això per explicar el control Treeview com cal interpretar l'XML.  Heus aquí un exemple:

tnb = nou TreeNodeBinding();
tnb.DataMember = "llista"; // Aquest és l'etiqueta de el xml per a un lloc.
tnb.TargetField = "listid";
tnb.ValueField = "títol";
tnb.ToolTipField = "Plantilla";

Aquesta unió diu el treeview que quan troba un <llista> node de l'XML, aplicar les fixacions per a TargetField, ValueField i ToolTipField.  En maig app, Aquestes mapa següent:

  • TargetField: Quan algú fa clic en un valor de node, Això és què aconseguirà per SelectedNode.Value.  Això no és ser confós amb...
  • ValueField: Això és el que vol el Treeview per mostrar a l'usuari.
  • ToolTipField: El valor de l'XML que voleu com un indicador de funció.

Afegir que TreeNodebinding a DataBindings de vista d'arbre i obtenir sortida com aquesta:

 

image

Tindré més a tot això mentre continuï en el projecte i finalment posar això en Codeplex.

</final>

Subscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

S'està connectant els filtres de camp de Text a la seva Part de Web de costum

Jo volia rebre informació d'un filtre de camp de Text en SharePoint 2010 a part de la meva web personalitzada.  He intentat fer servir Aquest article MSDN com a base però l'article és tampoc trencat o només no estic seguint correctament.

Una mica més de recerca es va presentar Mike Smith Contribució de MSDN aquí (http://social.msdn.microsoft.com/forums/en-us/sharepointdevelopment/thread/72F1732A-7F93-441E-8644-2E82BBB153D9).

Hi ha un munt de coses aquí a parts connectable web però l'article de Mike és tan simple com es posa.

</final>

Subscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

Ràpid i fàcil: Enviar correu utilitzant el servidor SMTP de Gmail en .NET C#

Això no és exactament un tema nou, però quan necessitava fer-ho, He trobat un munt de "per què no aquesta obra per a mi" i no massa Respostes directes. Espero que algú trobi aquest útil.

El bit de codi següent enviarà un e-mail utilitzant el meu compte de gmail per fer-ho, incloent-hi els fitxers adjunts:

utilitzant System.Net.Mail;
utilitzant System.Net;

NetworkCredential loginInfo = nou NetworkCredential("[El meu ID de Gmail]", "[La meva contrasenya de Gmail]");
MailMessage msg = nou MailMessage();
msg.De = nou MailAddress("[M Gmail Id]@gmail.com");
msg.To.Add(nou MailAddress("paul.galvin@arcovis.com"));
msg.Tema = «Prova l'infopath dev tema";
msg.Cos = "<HTML><cos><fort>Un missatge fort.</fort></cos></HTML>";
msg.IsBodyHtml = True;

foreach (corda aFile en NIPFD.GetAttachmentNamesAndLocations())
{
    msg.Attachments.Add(nou Fitxer adjunt(aFile));
} // Afegint-hi adjunts.

SmtpClient client = nou SmtpClient("smtp.gmail.com");
client.EnableSsl = True;
client.UseDefaultCredentials = fals;
client.Credencials = loginInfo;
client.Port = 587;
client.EnableSsl = True;
client.Enviar(msg);

Uns quants bits claus que em alentit i altres observacions / Notes:

  • La primera línia que crea l'objecte loginInfo ha d'utilitzar el gmail que ID desposseït de "@gmail.com”. Així, Si és la meva adreça d'e-mail de gmail "sharepoint@gmail.com"i la meva contrasenya és"xyzzy"la línia de llavors veuria com:

NetworkCredential loginInfo = nou NetworkCredential("sharepoint", "xyzzy");

  • El meu compte gmail està configurat per utilitzar SSL i que no era un problema.
  • Hi ha alguna informació contradictòria allà a quin port per utilitzar. Utilitzava Portuària 587 i funcionava bé per a mi.
  • En el meu cas, També havia d'enviar arxius adjunts. Que NIPFD objecte té un mètode que sap on són els meus arxius adjunts. Es torna un camí totalment (e. g. "c:\tempattachment1.jpg". En la meva prova, Tenia dos arxius adjunts i dos d'ells treballat multar.

Utilitzava visual studio 2008 d'escriure aquest codi.

</final>

Subscriure's al meu blog.

Follow me on Twitter http://www.twitter.com/pagalvin

Etiquetas de Technorati: ,,,