Arxius de la categoria: SharePoint

Com a solució d'errors de SharePoint misteriós.

Visió de conjunt:

Depuració és difícil quan el desenvolupament personalitzat funcionalitat Windows SharePoint Services 3.0 (WSS) o Microsoft Office SharePoint Portal Server (MOSS). El principal culpable és que SharePoint normalment superfícies molt poca informació diagnòstica en el navegador web quan es produeix un error. Aquesta entrada del bloc descriu com localitzar generat pel sistema diagnòstic informació addicional que sovint poden oferir aquest Plus mica de detall que es necessita per identificar causes d'arrel. Llavors això pot conduir a resoldre el problema.

He utilitzat aquesta tècnica amb gran èxit per resoldre errors de altrament misteriós.

Enfocament:

SharePoint estalvia una gran quantitat d'informació a un diagnòstic registre en un fitxer de registre de la 12 rusc.

El rusc» 12" està situat normalment a "C:\Programa FilesCommon FilesMicrosoft SharedWeb Server Extensions12 ". (No estic segur si és possible per la 12 rusc per viu a cap altre, de fet).

Es tracta de localitzar el fitxer de registre actual, forçar l'error i ràpidament obriu el fitxer de registre. Aquests arxius de registre es caracteritzen per:

  • Grans quantitats d'informació. SharePoint genera una gran quantitat d'informació diagnòstica i escriu molt ràpidament a aquell arxiu de registre. Has de ser ràpid amb els dits per capturar-lo.
  • Multiplicitat. SharePoint no escriu a un arxiu de registre senzill però més aviat genera múltiples fitxers de registre en la seqüència.
  • Copiï i enganxi bé a MS Excel.

El meu mètode preferit:

  1. Obren un Explorador de windows que apunta a la 12 hivelogs.
  2. Data de modificació ordena la visualització per mostrar els (més recent primer).
  3. Marqueu el fitxer de registre més actual.
  4. En una finestra del navegador web, l'error que es produeixi la força.
  5. Obriu el fitxer de registre actual ràpidament i copiar el seu contingut a MS Excel.
  6. Saltar al final i analitzar les entrades rellevants.

Altres Notes:

Per defecte, el registre de diagnòstic està situat a la 12 hiveLOGS directori.

MS Best pràctiques (Segons Mike T. de Microsoft) estat que els fitxers de registre ha de ser salvat per una unitat de disc dur. Això es fa mitjançant l'administració central. L'administrador del sistema pot haver fet això, en aquest cas evidentment necessitaria trobar el fitxer de registre allà en comptes del predeterminat 12 Localització de rusc).

Aquesta entrada aborda qüestions com:

  • Flux de treball de SharePoint fracassava a començar per un error intern.
  • (més per ser afegides gradualment)
  • Aquesta entrada ha estat útil diagnosticar errors de flux de treball (e. g. "El flux de treball ha fallat començar per un error intern").

MOSS: Eficaç introducció a una organització

(Aquesta entrada transcendint publicat entre http://paulgalvin.spaces.live.com/blog/ i http://blogs.conchango.com)

Les publicacions en aquest lloc són meves i no necessàriament representen les posicions de Conchango, estratègies o opinions.

Visió de conjunt:

Aquesta entrada es descriuen alguns antecedents sobre un gran (3,000 usuaris) Servidor de SharePoint de Microsoft Office (MOSS) desplegament i el que vam fer per aconseguir el projecte rodant de tal manera que el client sigui feliç i fermament per un camí que acaba amb l'adopció plena del conjunt de tret de molsa. Com de l'escriptura de l'entrada, som uns 50% completar amb la primera fase del projecte. Com el progrés de les coses, Vaig a actualitzar aquesta entrada i/o escriure noves entrades.

En aquest cas concret, l'empresa ja havia instal·lat SharePoint Portal Server 2003. El grup IT instal·lar el producte en una mena de "anem a veure si algú es preocupa" moda. Que fou ràpidament adoptat per molts usuaris de negoci i es va fer molt popular a l'empresa en general. Com es pot imaginar, Aquesta no era la millor estratègia de desplegament (que el client fàcilment admet) i quan MOSS va arribar a l'escena, el client resolts a "fer-ho bé" i va contractar a nosaltres per ajudar-los.

Una de les preguntes que ens enfrontem quan vam començar aquest projecte va ser: Com presentem molsa a aquest client? Atès que el client ja tenia experiència amb SharePoint, Hem preguntat — necessitem fer "diferencial" formació o fer que comencem des del terra cap amunt? Després de treballar amb usuaris clau, hem decidit que tractant això com un projecte de camp verd fetes més sentit.

Aquesta decisió va donar un punt de partida, però encara ens va deixar amb el requisit essencial d'esbrinar una bona estratègia per a desenrotllar molsa a l'empresa. MOLSA és un animal tan gran … inclou gestió de continguts, gestió de documents, Cerca, seguretat, auditoris, gestió de projectes, "fabulós quaranta" plantilles, flux de treball, connector de dades empresarials, etc. Si unim això amb el fet que és una gran organització que pot realment fer ús de pràcticament cada molsa important característica i té els ingredients d'un gran projecte amb un abast de empresa i moltes coses bones, passant.

Ens estem confrontats amb aquest assumpte i altra vegada … MOLSA ha una empresa arribar amb el seu conjunt de tret d'empresa, encara fins i tot una mica sofisticats clients tenen un temps dur mentalment absorbir aquells trets, deixar sol incorporar una fracció apreciable d'ells en la seva rutina diària.

No tinc una solució màgica al problema. Em dirigeixo en canvi només els primers passos que hem tingut amb el client per guiar-los pel camí d'èxit a llarg termini adopció.

Àmbit d'aplicació:

Tant com volia l'equip per elaborar un pla de projecte que inclou aquestes fites com "PoepleSoft integració via BDC completat", "Nou producte creu-departamental llançament flux de treball complet" i "Direcció executiva KPI acceptat", Vaig haver de conformar una cosa menys. Això és no dir que menys"" és dolent. De fet, menys"" que vam decidir per al desplegament inicial era milles per davant d'on eren abans de començar. En el nostre cas, menys"" es va convertir en:

  • Gestió simple document utilitzant les biblioteques de documents, tipus de control i contingut de la versió.
  • Cerca eficaç basat en els tipus de contingut i personalitzava cerca avançada (mitjançant les propietats administrades, XSLT per produir resultats bastant, etc).

A més dels trets citats àmplia d'empresa (és a dir que estaven que es desenrotlli a tots els departaments i els usuaris), Hem afegit els de singleton dins d'abast següents mini-projectes:

  • Prova de concepte integració del BDC.
  • Procés de diversos passos i multi-branca flux de treball creat mitjançant SPD.
  • Forma complexa de l'InfoPath.
  • Surten a la superfície de KPI per a algun procés de negoci (probablement HR adquisició de talent en el nostre cas, encara que això pot canviar).

L'àmbit d'aquí no és 100% precisa però representativa del nostre enfocament i suficient per al meu propòsit aquí, que és explicar el que considero que es una "efectiva" Introducció de molsa que posarà el client fermament pel camí d'or a l'adopció plena de molsa.

No escric molt més sobre el Patró singleton en aquesta entrada. Vull assenyalar que aquests són part de la nostra estratègia excés arqueig. La idea és implementar les document gestió i recerca característiques bàsiques a tots els usuaris i proporcionar altament funcional, alts visibles i molt representatius exemples d'altres característiques de molsa de cor que són simplement més enllà de la capacitat de la majoria dels usuaris d'absorbir en aquesta etapa primerenca. No obstant això, seran "allà fora" i una espera que altres unitats de negoci es sàpiga o conèixer-los i volen aquells trets per si mateixos, condueix a una major adopció. Aquestes històries d'èxit de singleton també serveixen per donar el nostre equip comercial "municions" per guanyar amb èxit en segon lloc, projectes tercers i n-fase.

Què introduïm i per què?

Que es van establir en gestió documental i la recerca com a requisit de base àmplia d'empresa, que necessitàvem iniciar la recollida de dades. Com a qüestió pràctica, això giraven al voltant d'entendre els seus documents i que en última instància, s'assignen per entendre els tipus de contingut.

He trobat que és difícil d'explicar els tipus de contingut sense ajudants visuals. Folk més tècnics pot allunyar una discussió sobre el tipus de contingut quan CT es descriuen en termes de base de dades. "A CT és similar a una taula de base de dades, té les columnes i les columnes es defineixen en termes de tipus de dades, però el tipus de dades CT inclou més que la simple enter/data, però també elecció"" i "Cerca" i similars." Podem parlar de "estendre" tipus de contingut, igual que un pot heretar funcionalitat d'una classe base en llengües orientada a objectes. Tanmateix això òbviament no és útil per a transport Departament Administració qui té cap fons tècnic. És a dir, gairebé tothom que li importa a un rollout de molsa.

Utilitzant una pissarra blanca és dubtós. Jo he presentat la idea d'un tipus de contingut i brillant dibuixat (o pel que sembla) imatges de tipus de contingut i què fan per a vostè en termes de cerca i com es pot ampliar, etc. Al final, se sent com alguns bombetes s'han convertit, però la imatge resultant de pissarra blanca és un embolic.

Això ens va portar al nostre lloc d'aterratge actuals i per tant molt més eficaç: un lloc de sorrera molsa configurat per mostrar aquestes característiques.

Utilitzant el lloc de sorrera, podem demostrar:

  • Tipus de contingut:
    • Creació d'un CT amb múltiples tipus de dades (text, data, elecció, booleà, Cerca, etc).
    • Que s'estén un CT creant un nou CT basat en un pare.
    • Recerca de documents utilitzant metadades CT.
  • Biblioteques de documents:
    • L'Associació una sola CT amb una biblioteca.
    • Què passa quan carreguem un document a la biblioteca?
    • Múltiples CT l'associació amb una biblioteca de document.
    • Què passa quan carreguem un document a la biblioteca?
    • Filtrat i ordenació mitjançant les capçaleres de columna en un lib doc.
    • Vistes de Biblioteca de document:
      • L'ordenació
      • L'agrupament
      • "Entrada ràpida" (Visualització de full de dades)
      • "Dades sense etiquetar" (per ajudar amb la migració de molsa d'altres fonts de contingut; més sobre això sota).

El lloc de sorrera:

Hem dissenyat nostra lloc sorrera sigui una característica permanent en l'entorn de desenvolupament per ser utilitzat per a propòsits formatius llargs després vam acabar el projecte i inclou diversos artefactes com es descriu:

Tipus de contingut:

Hem definit els següents tipus de contingut: Factura, Ordre de compra, Factura de serveis.

Hem seleccionat ordre factura i compra perquè són més o menys universalment sota
entitats es dreçà. Tothom en negoci entén que la factura és una demanda de pagament a un atenció al client per a un quantitat emesa en una determinada data Cal abonar segons alguns condicions de pagament. Això condueix a una definició natural del que hem anomenat "factura de formació tac" (per distingir-la de qualsevol altre tipus de factura). L'ordre de compra es defineix igualment fàcilment. També hem creat una "formació serveis factura" creant un nou CT basant-se en la "formació factura" CT i afegit una sola columna, "serveis prestats".

Amb l'anterior, ara puguem demostrar algunes característiques clau de CT sense sent bogged down tractant d'explicar un concepte abstracte de primer; ja tothom entén què entenem per "factura" i "ordre de compra" i en canvi són capaços de centrar-se en la mecànica de la CT propi.

Llistes de costum:

CT amb la columnes de tipus "Cerca" Seleccioneu un costum llista o biblioteca de documents. Utilitzem això extensament i per a la sorrera, hem creat una llista personalitzada que conté els clients de suport. Hem recollit els clients perquè és un concepte fàcil d'entendre i fàcil de demostrar. La factura CT té una columna, "atenció al client" que es defineix de tipus "Cerca" que apunta a aquesta llista.

Hem creat una llista personalitzada similar per gestionar proveïdors"" per a la comanda de compra"" CT.

Biblioteques de documents:

Hem creat dues biblioteques de documents: "Factures" i "Mixt Documents".

Hem configurat la biblioteca de documents de factures per gestionar documents només de tipus CT "Factura".

Hem configurat la documentació"mixt" Biblioteca gestionar tots els tres CT.

Crear diverses imatges que mostren l'ordenació, filtratge, full de dades i l'agrupament.

Cerca:

Podem definir dues noves propietats administrades i assignar-los a número de factura i el client.

Hem creat un nou lloc de Cerca personalitzada avenç i modificada per permetre als usuaris buscar per "factures" usant aquestes dues propietats assignades.

Modificar l'XSLT per tal que el número de factura i el client, Quan presenten, apareixen en una taula d'HTML en un color brillant. L'objectiu és demostrar que aquest format és possible.

Posant tots junts:

Podem organitzar per a usuaris clau participar en una demostració.

Seguim aquest script senzill:

  1. Descriure el significat i el propòsit d'un CT, mitjançant les factures i les comandes de compra com a exemples.
  2. Mostra la definició de CT factura mentre simultàniament assegurant que no necessiten utilitzar aquelles pantalles ells mateixos, només recollir els conceptes.
  3. Anar a la biblioteca de documents de factures.
  4. Carregar un document.
  5. Demostrar que el client desplegable realment prové d'una llista personalitzada.
  6. Afegir un nou client a la llista de client i llavors actualització metadades de la factura recentment carregada amb el client novament creat.
  7. Canviar el document"mixt" Biblioteca i carregar un document. Explicar com el sistema demani un tipus de document.
  8. Anar a biblioteca de documents de factures i mostrar com fent clic a un nom de columna canvia l'ordre.
  9. Demostrar el filtratge de nivell de columna.
  10. Mostrar diferents punts de vista que demostren la multi-nivell de classificació, filtratge i l'agrupació.
  11. Mostra la visualització de full de dades.
  12. Explicar el propòsit d'un "sense etiquetar documents" Vista.
  13. Canviï's a la cerca avançada personalitzat.
  14. Per ara, el document acaben de penjar hauria estat rastrejades i indexat, Així que fes una cerca que demostra la capacitat per localitzar aquesta factura mitjançant l'establiment assignat.
  15. Podem demostrar la diferència entre buscant a través de propietats assignades contra. només una recerca de text.

En aquest punt, més o menys hem acabat amb la demo. Sembla tenir sobre 30 per 45 minuts, depenent de com moltes preguntes gent pregunta.

Llavors enviem-los tornar al seus escriptoris amb els "deures". Consisteix en un senzill full de càlcul excel on podem demanar-los que defineixen per a nosaltres el que pensen que necessiten en termes de CT, tant a un nivell alt (propòsit només nom i empresarial) a més de columnes i tipus de dades es d'emmagatzemar a la columna. No demanem per definir tipus de dades de columna en termes de molsa, però les condicions de negoci.

En resum:

Hem creat un ambient de sorrera que podem utilitzar per demostrar algunes característiques de molsa nucli el recurs son àmplia d'empresa.

Ens han modelat entitats empresarials fàcilment entès i comuns per tal que els usuaris es poden centrar en MOSS i no embossar a les entitats / exemples propis.

Els usuaris de negoci a peu de les sessions amb els "deures tesis" en forma de superar documents que ara són competents per a omplir i utilitzar per a dissenyar el seus propi tipus de contingut de primer tall.

Finalment, com podem realitzar demostracions amb el temps, companys d'equip del client-se esdevingut més capaços de portar endavant, fer la demostració de si mateixos i generalment liberalitzar la resta de nosaltres per a treballar en temes més complexos, com global taxonomia, fluxos de treball complexos, BDC i similars.

MOSS: Exemple funcional-dades personalitzades tipus

Escenari de negocis:

Implantació àmplia d'empresa de molsa per empresa de fabricació amb 30+ uns quants dotzena corporatives departaments i llocs.

Objectiu de negoci:

Malgrat la multitud de grups empresarials (departaments, localitzacions, etc), ha de mantenir certes dades a nivell global. Per exemple, una llista mestra autoritzat de totes les ubicacions físiques de l'empresa (e. g. instal·lacions de fabricació, localitzacions de magatzem, oficines de vendes) ha de mantenir en un emplaçament cèntric.

Problema tècnic:

La taxonomia d'empresa va ser implementat utilitzant múltiples col·leccions de llocs. Ens hagués agradat crear una llista personalitzada WSS llista d'ubicacions físiques. Llavors, Quan el necessitàvem tenir una columna en un tipus de contingut (o una columna s'afegeix a una llista o document de la biblioteca) que contenia llocs corporatius, hem de crear una columna mitjançant la cerca"" tipus de dades i punt d'aquesta llista mestra.

Per desgràcia, es cerca d'accedir a una llista de font "localment" és a dir que la nostra llista autoritzat no pot abastar col·leccions de llocs.

Solució tècnica:

Implementar un nou tipus de dades personalitzades implementat sobre la base d'SPField i representat com un DropDownList en l'UI poblar la ListItems de la llista mestra WSS.

Hem creat una nova col·lecció anomenada "http://localhost/EnterpriseData". Hi ha, hem creat una llista personalitzada anomenat "Localitzacions corporativa". Aquesta llista només utilitza el "títol estàndard" camp conté la llista d'ubicacions reals corporatius.

Seguint uns quants passos discrets per crear un tipus de dades personalitzades en WSS. Són:

  1. Definir una classe que hereti des d'SPField (un pot heretar d'altres camps, si és necessari).

Aquí està el codi per a que:

públic classe XYZZYCorporateLocationField : SPFieldText
{
públic XYZZYCorporateLocationField
(SPFieldCollection camps, corda typeName, corda displayName)
: base(camps, typeName, displayName) { }

públic XYZZYCorporateLocationField
(SPFieldCollection camps, corda displayName)
: base(camps, displayName) { }

públic invalidació BaseFieldControl FieldRenderingControl
{
aconseguir
{
BaseFieldControl control = nou XYZZYCorporateLocationFieldControl();
control. FieldName = això.InternalName;
retorn control;
} //aconseguir
} // fieldrenderingcontrol

públic invalidació corda GetValidatedString(objecte valor)
{
Si (això.Requerit || valor. ToString().És igual a(Corda.Buit))
{
tir nou SPFieldValidationException ("Departament no està assignat.");
}
retorn base.GetValidatedString(valor);
} // getvalidatedstring

} // XYZZYCorporateLocation

  1. Definir una altra classe que hereta el control de camp base, com a:

públic classe XYZZYCorporateLocationFieldControl : BaseFieldControl
{
protegit DropDownList XYZZYCorporateLocationSelector;

protegit invalidació corda DefaultTemplateName
{
aconseguir
{
retorn "XYZZYCorporateLocationFieldControl";
}
} // DefaultTemplateName

públic invalidació objecte Valor
{
aconseguir
{
EnsureChildControls();
retorn això.XYZZYCorporateLocationSelector.SelectedValue;
} // aconseguir
conjunt
{
EnsureChildControls();
això.XYZZYCorporateLocationSelector.SelectedValue = (corda)això.ItemFieldValue;
} // conjunt
} // substituir el valor d'objecte

protegit invalidació buit CreateChildControls()
{

Si (això.Camp = = nul·la || això.ControlMode = = SPControlMode.Exhibició)
retorn;

base.CreateChildControls();

això.XYZZYCorporateLocationSelector =
(DropDownList)FindControl TemplateContainer.("XYZZYCorporateLocationSelector");

Si (això.XYZZYCorporateLocationSelector = = nul·la)
tir nou Excepció("ERROR: No es pot carregar. Fitxer ASCX!");

Si (!això.Pàgina de IsPostBack.)
{

utilitzant (SPSite lloc = nou SPSite("http://localhost/enterprisedata"))
{
utilitzant (SPWeb web = lloc. OpenWeb())
{

SPList currentList = la web. Llistes["Llocs corporatius"];

foreach (SPItem XYZZYCorporateLocation en currentList.Items)
{
Si (XYZZYCorporateLocation[Títol""] == nul·la) «««;

corda theTitle;
theTitle = XYZZYCorporateLocation[Títol""].ToString();

això.XYZZYCorporateLocationSelector.Items.Add
(nou Element de llista(theTitle, theTitle));

} // foreach

} // utilitzant spweb web = site.openweb()
} // utilitzant spsite lloc = spsite nou("http://localhost/enterprisedata")

} // Si no una devolució

} // CreateChildControls

} // XYZZYCorporateLocationFieldControl

El codi citat bàsicament implementa la lògica per emplenar el DropDownList amb els valors de la llista de costum WSS situat al http://localhost/enterprisedata i anomenat "departaments corporativa".

Defineix ambdues classes en un arxiu sol CS, compilat i posar-lo a la GAC (fort requerit, clar).

  1. Aplicar una plantilla de control (.ascx) com es Mostra:

<%@ Control Llengua= "C#" Hereta="Microsoft.SharePoint.Portal.ServerAdmin.CreateSiteCollectionPanel1,Microsoft.SharePoint.Portal,Versió = 12.0.0.0, cultura = neutre,PublicKeyToken = 71e9bce111e9429c" compilationMode= "Sempre" %>
<%
@ Registrar-se TagPrefix= «wssawc" Espai de noms="Microsoft.SharePoint.WebControls" L'Assemblea="Microsoft.SharePoint, Versió = 12.0.0.0, Cultura = neutral, PublicKeyToken = 71e9bce111e9429c" %> <%@ Registrar-se TagPrefix= "Del SharePoint" Espai de noms="Microsoft.SharePoint.WebControls" L'Assemblea="Microsoft.SharePoint, Versió = 12.0.0.0, Cultura = neutral, PublicKeyToken = 71e9bce111e9429c" %>
<SharePoint:Plantilla de representació ID= «XYZZYCorporateLocationFieldControl" runat= "servidor">
<Plantilla>
<escurçó:DropDownList ID= «XYZZYCorporateLocationSelector" runat= "servidor" />
</Plantilla>
</
SharePoint:Plantilla de representació>

L'anterior està guardada en c:\programa filescommon comunesMicrosoft sharedweb server extensions12controltemplates.

  1. Finalment, Creem un fitxer XML a salvar a la... 12XML directori. Això és CAML que defineix el nostre tipus de dades personalitzades i pel meu exemple, aquest aspecte:

<?XML versió="1.0" codificació="UTF-8" ?>
<
FieldTypes>
<
FieldType>
<
Camp Nom="TypeName">CorporateLocations</Camp>
<
Camp Nom="ParentType">Text</Camp>
<
Camp Nom="TypeDisplayName">Llocs corporatius</Camp>
<
Camp Nom="TypeShortDescription">Totes les localitzacions XYZZY corporativa incloent instal·lacions de fabricació o altres.</Camp>
<
Camp Nom="UserCreatable">VERITABLE</Camp>
<
Camp Nom="ShowInListCreate">VERITABLE</Camp>
<
Camp Nom="ShowInDocumentLibraryCreate">VERITABLE</Camp>
<
Camp Nom="ShowInSurveyCreate">VERITABLE</Camp>
<
Camp Nom="ShowInColumnTemplateCreate">VERITABLE</Camp>
<
Camp Nom="FieldTypeClass">Conchango.XYZZYCorporateLocationField, XYZZYCorporateLocationField, Versió 1.0.0.0 de =, Cultura = neutral, PublicKeyToken = b0b19e85410990c4</Camp>
<
RenderPattern Nom="DisplayPattern">
<
Interruptor>
<
EXPR>
<
Columna />
</
EXPR>

<Cas Valor=""/>

<Per defecte>
<
HTML>
<![CDATA[
<abasten estil = "color:Vermell"><b>]]>
</
HTML>

<
Columna SubColumnNumber="0" HTMLEncode="VERITABLE"/>

<HTML><![CDATA[</b></span>]]></HTML>

</
Per defecte>
</
Interruptor>

</
RenderPattern>
</
FieldType>
</
FieldTypes>
Aquest fitxer XML afegeix el tipus de dades personalitzades a la "biblioteca WSS" i fa correspondre'l en contra de la GAC havia Assemblea.

Després entrant tots aquests bits en lloc, iisreset en el servidor i ho hauria all stars treballant de manera bonica.

MOSS: Actualitzar una llista personalitzada

Hi ha molts bons exemples d'actualització de les llistes personalitzades mitjançant l'SDK. Aquí és un altre.

Problema de negoci: Formulari InfoPath ha estat dissenyat que permet als usuaris introduir en línia compra requisitions. PO sol·licitud ha de ser números de seqüència tradicional basat en valors enters i calcula automàticament.

Solució de negoci: Crear una llista personalitzada de molsa que contenen dues columnes: "ControlField" i "ControlValue". La columna de valor conté el següent número de sol·licitud de compra. Tingueu en compte que el genèric "control" proporciona Convenció de nomenclatura per als camps de futur control que es pot utilitzar com sigui necessari.

Solució tècnica: Crear un servei web accessible per part del client de l'InfoPath. El servei web torna altra vegada el proper número de la sol·licitud compra i actualitza el valor de la llista.

Lliçons apreses:

  • Quan afegiu aquest servei web com a font de dades al formulari de l'InfoPath, Em va semblar necessari per convertir-lo en un udc i emmagatzemar-lo en una biblioteca de connexió de dades.
  • Jo també resultava necessari habilitar els scripts entre dominis mitjançant l'administració de serveis centrals // aplicacions de gestió // configuració de servidor de forma.
  • La primera vegada provat el formulari accedir al servei web, pren un temps i d'ocasió, ho faria temps d'espera. Em fiddled amb escenes de configuració de servidor de forma d'ampliar la configuració del temps d'espera i que semblava que ajudés.

El codi:

utilitzant Sistema;
utilitzant System;
utilitzant System.Web.Services;
utilitzant System.Web.Services.Protocols;
utilitzant Microsoft.SharePoint;
utilitzant System.Configuration;

[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
públic classe PoService : System.Web.Services.WebService
{
públic PoService () {

//Incomenti la línia següent si utilitzant dissenyat components de
//InitializeComponent();
}

/// <resum>
/// Obtenir el següent nombre PO de la llista del sharepoint po nombre control.
/// Incrementar el nombre de PO en aquesta llista.
/// </resum>
/// <devolucions></devolucions>
[WebMethod]
públic corda GetNextPoNumber()
{
corda SpPoControlSiteName; // Nom del lloc real molsa que allotja la llista de PO Control.
corda SpPoControlListName; // Nom de la llista actual de molsa que contenen el control Po.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();

corda nextPoReqNumber = "xyzzy";

utilitzant (SPSite lloc = nou SPSite(SpPoControlSiteName))
{
utilitzant (SPWeb web = lloc. OpenWeb())
{

SPList currentList = la web. Llistes[SpPoControlListName];

foreach (SPItem controlItem en currentList.Items)
{

Si (((corda)controlItem["ControlField"]).És igual a("NextPoNumber"))
{
nextPoReqNumber = (corda)controlItem["ControlValue"];

Int int_nextPoReqNumber;
int_nextPoReqNumber = Convertir.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}

} // Localització, llegir i actualitzar el nombre PO a la llista.


} // utilitzant spweb web = site.openweb()
} // utilitzant spsite lloc = spsite nou("http://localhost/mizuho")

retorn nextPoReqNumber;

}
}