Լուծում Problem: “FileNotFoundException” Իմ Feature ստացողի.

I was working on a feature last week that would add some event receivers to a specific list instance. (Ես Blogged մի քիչ այդ ցուցակից ստացողի այստեղ).

Օգտագործելով հրամանի տող, Ես կարող եմ տեղադրել հնարավորությունը առանց սխալի (Բայց տես ստորեւ համար թաքնված սխալի). When I tried to deploy the feature on the site, MOSS complained of a "FileNotFoundException" սխալ. This blog entry describes how I solved it.

Սա սխալ է, որ MOSS ցույց ինձ վեբ բրաուզերի:

Feature ‘b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ could not be installed because the loading of event receiver assembly "xyzzyFeatureReceiver_0" տապալվեց: System.IO.FileNotFoundException: Could not load file or assembly ‘xyzzyFeatureReceiver_0’ կամ դրա կախվածությունը. Համակարգը չի կարող գտնել ֆայլը նշված.
Ֆայլի անունը: ‘xyzzyFeatureReceiver_0’
at System.Reflection.Assembly.nLoad(AssemblyName Ֆայլի, String codebase, Ապացույցներ assemblySecurity, Վեհաժողովը locationHint, StackCrawlMark& դեղ հողը, Բուլյան throwOnFileNotFound, Բուլյան forIntrospection)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Ապացույցներ assemblySecurity, StackCrawlMark& դեղ հողը, Բուլյան forIntrospection)
at System.Reflection.Assembly.InternalLoad(String assemblyString, Ապացույցներ assemblySecurity, StackCrawlMark& դեղ հողը, Բուլյան forIntrospection)
at System.Reflection.Assembly.Load(String assemblyString)
at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Վեհաժողովը պարտադիր անտառահատումները անջատված.
Որպեսզի ժողովի կապում անհաջողության logging, սահմանել ռեգիստրային արժեքը [HKLM Software Microsoft Fusion!EnableLog] (DWORD) դեպի 1.
Նշում: Կա մի կատարում տույժը կապված հավաքների կապում ձախողումը հատումների.
Դիմել այս հնարավորությունը դուրս, հանել ռեգիստրային արժեքը [HKLM Software Microsoft Fusion!EnableLog].

Troubleshoot խնդիրները Windows SharePoint ծառայություններ.

Ես գիտեմ, թե ինչպես պետք է միտումնավոր պատճառել այդ սխալը: don’t install the assembly in the GAC. Սակայն, it was in the GAC. I normally install assemblies into the GAC by dragging them into the c:\windows\assembly folder using windows explorer. I’ve never felt 100% հարմարավետ անում է, որովհետեւ ես միշտ էլ մտածեցի, որ gacutil գոյություն դա պատճառ … so I tried that. It made no difference.

Ես փնտրում է Internets եւ գտել այս գրառումը: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

Պաստառի տեղի է օգտագործելով նույն արմատային քիչ կոդը (ներսից WSS գրքի այս ցուցակում) so that was a hopeful sign. Սակայն, առաջարկով զարդարում ժողովին հետ [ժողով: ] directive didn’t make sense to me. I tried it anyway and I was right. It made no difference.

Then I noticed that my class definition was not public. I made it public and that made no difference.

Հաջորդ, I went to the trouble of enabling the "assembly bind failure log" (հետո օգտակար եւ ճշգրիտ ցուցումների նախատեսված) and this is where things started to get interesting. That log shows me that the runtime is searching everywhere on that server for my assembly. It even appears to be searching for it in my medicine cabinet. Սակայն … այն չի փնտրում դրա համար, որ GAC.

I put on my winter jacket and go searching the Internets again and find that someone has had this problem too. The lengthy discussion in that posting peters off into nothing and I can’t find a solution.

I move my assembly into one of the places the log claims it’s searching and I make a little more progress. I’m rewarded with a new error in the browser when I try to activate the feature:

Failed to create feature receiver object from assembly "xyzzyFeatureReceiver_0", type "Conchango.xyzzyFeatureReceiver" եւ խաղարկային b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Value կարող լինել առ.
Պարամետր անունը: տիպ
at System.Activator.CreateInstance(Type տեսակը, Բուլյան nonPublic)
at System.Activator.CreateInstance(Type տեսակը)
at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Troubleshoot խնդիրները Windows SharePoint ծառայություններ.

Ժամանակը մի վերջին մեկնելու է Internets!

Այս անգամ ես պարզել,, predictably բավարար, that MOSS issues this error because the assembly is not in GAC.

Ես ուզում եմ ստանալ մի բան, դրական դուրս եւ փորձել զգալ մի քիչ հպարտ եմ, որ ես եմ ստեղծել այն Ընդհատակում րդ MSIL հավաքների, but it’s not working. I’m just plain annoyed. I find myself muttering "chicken or the egg" տակ իմ շունչը.

I finally decide to punt. I create an entirely new project and copy/paste the code from the incredible-cloaked-from-the-GAC-assembly non-working project over to this new project. (I look for a build flag called something like "hide from assembly binding if installed in the GAC" բայց չի կարող գտնել մեկին).

Ես տեղադրել առանձնահատկությունը եւ ակտիվացրեք եւ … այն աշխատում! Այնքան, հետո այդ, I had to basically ‘reboot’ my project. Սա եւս մեկ պատճառ, թե ինչու եմ ատում համակարգիչներ.

I did learn something useful from this. I had been installing features using the stsadm command line all day long and been using the "-force" option out of habit. Ինչ - ինչ պատճառներով, I did not use the -force option when I installed the new project. Այս անգամ, Ես իրականում, truly forget to copy this new project’s assembly into the GAC. Արդյունքում, I received that "FielNotFoundException" սխալ. Այս անգամ, Ես այն stsadm, not when I tried to activate the feature via the web browser. Այնքան, -force actually plays two roles. It allows you to re-install an existing feature. It also allows you to install a buggy feature that cannot work at runtime by suppressing the error. It probably says as much in the help somewhere but I never noticed it.

</վերջ>

Կիրակի Զվարճալի: Վերեւ 10 Ways To գրգռել ձեր կինը

  1. Գնել բրոկկոլի, երբ դուք գիտեք, կա արդեն ավելի քան բավարար է սառնարանի.
  2. Go for a run. Cool off. Take off clean pillow case and replace with T-shirt. Cover with clean pillow case.
  3. Երբ մեքենայով, արդյոք մենք պետք է գնանք սխալ ճանապարհ է, որը միակողմանի փողոց.
  4. Համար 15 տարի, ամեն կիրակի, որ կինը պետք է իր թանգարանը, էքսպրես զարմանալի է, որ թանգարաններ բաց են կիրակնօրյա.
  5. Համար 15 տարի, occasionally suggest going to the local book store on Sunday. Express surprise that they are not open on Sunday’s (thanks a lot Կապույտ Օրենքներ!).
  6. Օգտագործում 20 միավոր անել 3 point turn.
  7. Ին թույն վաղ հոկտեմբերյան afternoon, walk into the room and turn on the A/C. Complain that it’s cold. When wife says, "then why did you turn that on, հիմար" եւ ստանում մինչեւ միացնել այն, grab the warm spot she had on the couch. Bonus points if she does not realize you did it until much later.
  8. Բացել մի կարող է համեղ սպիտակ albacore թունա եւ ուտել այն ուղիղ է կարող է, անկողնում, գիշերը.
  9. Գացէք խոհանոցում, իսկ կինը ուտում ճաշ, բացել պատառաքաղ գզրոց եւ հրում պարագաներ շուրջ, մինչեւ կնոջ screams, "what are you looking for!"
  10. Ստանալու նոր բիզնես քարտերի, գաղտնի նրանց ամբողջ տունը: Համաձայն անկողնում, եւ բարձ դեպքերում, ներսում սուրճի գավաթների, իր քսակը, եւ բուրդ գրպանում, car Ձեռնոց compartments, մառանն — anywhere you can think of.
  11. Գրել բլոգային ձեր կնոջ.
  12. Արթնանալ.
  13. Երբ քայլում փողոցներում Նյու Յորքում, be on the alert for "crusty" objects on the ground. Պահելու մտքում ձեր կնոջ առանձնահատուկ մտավախություններ, հասնել ներքեւ կարծես վերցնել մեկ է, եւ խնդրել, "hmm, Զարմանում եմ, թե ինչ է?" (Be prepared for wife to body slam you as if she’s a secret service agent protecting the President from a sniper or you’ll find yourself laying on your back on the sidewalk).
  14. Drive twice around a parking lot looking for space. You know you’ve really hit pay dirt when your son in the back seat yells, "Oh no! Նա անում է այն, կրկին!"
  15. Write "top 10" ցուցակները, որոնք չեն ունենա 10 նյութեր.

===

Bonus կինը joke:

Two male co-workers go out to lunch. One of them tells the other, "I let loose an embarrassing Freudian slip the other night."

"A Freudian slip? What’s that?"

"Well, , երբ մենք ավարտեցինք ուտում, որ մատուցողուհի եկավ եւ հարցրեց, թե ինչպես ենք մենք սիրում ենք մեր սնունդ. Ես նկատի եմ, ‘I loved the chicken breast’ but instead I said ‘I loved your breasts’. I was so embarrassed."

"Ah," his co-worker replied. "I had the same thing happen to me this weekend with my wife. We were eating breakfast I meant to ask her to pass the butter, բայց փոխարենը ես ճչաց իր, ‘You ruined my life!'"

</վերջ>

Արորդիների Tags:

Event ID 1023: “Windows Հնարավոր չէ բեռնել ձգվող շուրջ DLL MSSCNTRS”

ԹԱՐՄԱՑՆԵԼ (04/08/08): I seem to have solved this problem. From the command line, Ես վազեցի «C:\Windows system32 lodctr / R" ըստ ամիսը խոսում InstallShield խնդիրները եւ, որ կարծես թե լուծել եմ, ինձ համար.

Ես նկատեցի, որ վերջին ժամանակներս, my desktop/server fan never turns off. I know it used to turn off. I took a moment to check it out noticed that the a VMware process was running a consistent 20% utilization on one of the CPU’s. I checked the event log and saw these errors in the application log happening dozens of times per minute:

Windows չի կարող բեռնել ընդարձակելի counter DLL UGatherer, առաջին DWORD տվյալների բաժնում է Windows error code.

Windows չի կարող բեռնել ընդարձակելի counter DLL UGTHRSVC, առաջին DWORD տվյալների բաժնում է Windows error code.

Windows Հնարավոր չէ բեռնել ձգվող շուրջ DLL MSSCNTRS, առաջին DWORD տվյալների բաժնում է Windows error code.

Եթե ​​ես ակոս մեջ մանրամասներին որեւէ հաղորդագրություններից, Եմ ստանալ այս:

Աղբյուր: Perflib

Տիպ: Սխալ

Կարգավիճակ: Ոչ մեկը

Event ID 1023

I did some research and there was some indication it could be a permission problem in terms of access to the DLLs in question. I played around with that stuff but could not affect things in a positive way so I gave up on that.

VMware էր nagging ինձ հանդես է թարմացվել է բավական ժամանակ, ես jotted ցած տարբերակը ես տեղադրել (apparently "1.0.1 build 29996") and did the update. This upgraded me to v1.04. Տխուր, դա չի ամրագրել հարցը.

I can stop the insane number of messages going to my application log if I shut down a service named "VMware Authorization Service". This prevents me from using the VMware software, այնքան … not such a great option.

Ընդունող Օպերացիոն համակարգը դա Windows XP 64 բիտ.

Ես չեմ կարծում, որ դա միշտ էլ եղել, բայց ես չեմ հիշում, որ որեւէ իրադարձություն, որ կարող է հանգեցրել է դրան.

Սա է պատճառը, որ ես ատում եմ համակարգիչներ.

</վերջ>

Արորդիների Tags:

Արագ & Հեշտ: Վերանվանել Uploaded ֆայլը SharePoint օբյեկտը մոդել միջոցով Event ստացողի

ԹԱՐՄԱՑՆԵԼ: This works but there are significant limitations which are described in the comments. This may still be useful in some cirumstances.

ԹԱՐՄԱՑՆԵԼ 2: Իմ ներկա նախագծին, users always upload documents. Արդյունքում, I don’t run into a problem where MS Word is running and thinks that the file was renamed on it. I did run into a problem, "the file was modified by someone else" and solved this via a simple semaphore type flag. Users need to change a meta data field from its default value to something else. The itemupdated() ընդունիչ նայում է վավեր արժեք են մինչեւ փաստացի իրականացնելու վերանվանել եւ դրանից հետո, I have not had any problems. Your mileage may vary.

I have a client requirement to change the name of files uploaded to a specific document library to conform with a particular naming convention. The API does not provide a "rename()" մեթոդ. Փոխարեն, մենք օգտագործում "MoveTo(…)". Here is a minimal bit of code to accomplish this:

 հասարակություն ոտնատակ տալ անվավեր ItemAdded(SPItemEventProperties հատկություններ)
        {
            SPFile f = properties.ListItem.File;

            f.MoveTo(properties.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc");
            f.Update();

        }

The only tricky bit is the "properties.ListItem.ParentList.RootFolder.Url". The MoveTo() method requires a URL. That mashed up string points me to the root folder of my current document library. This allows me to avoid any hard coding in my event receiver.

Սա ավելի օգտակար տարբերակ է, որը չի նույն բանը, but assigns the name of the file to "Title":

 հասարակություն ոտնատակ տալ անվավեր ItemAdded(SPItemEventProperties հատկություններ)
        {
            DisableEventFiring();

            // Վերագր կոչում այս նյութի անունով ֆայլի մեջ.
 // Նկատի ունեցեք,: Սա նշանակում պետք է տեղի ունենա, նախքան մենք փոփոխել ֆայլը ինքը.
 // Հեռախոսային թարմացում() ին SPFile կարծես չեղյալ հատկությունների մեջ
 // ինչ - որ իմաստով.  Updates to "Title" չհաջողվեց մինչեւ այդ փոփոխության (եւ թարմացնել() կոչ)
 // տեղափոխվել դիմաց փոփոխության է ֆայլի անունը.
            properties.ListItem["Title"] = Properties.ListItem.File.Name;

            properties.ListItem.Update();

            SPFile f = properties.ListItem.File;

            // Ստացեք երկարաձգում է ֆայլը.  Մենք պետք է, որ ավելի ուշ.
 լարային spfileExt = նոր File Info(f.Name).Երկարացնելը;

            // Վերանվանել ֆայլը է ցանկ Նյութի ծանոթյություններ ID եւ օգտագործման ֆայլի ընդլայնում է պահել
 // որ մասը անձեռնմխելի.
            f.MoveTo(properties.ListItem.ParentList.RootFolder.Url +
                "/" + properties.ListItem["ID"] + spfileExt);

            // Կատարել է քայլ.
            f.Update();

            EnableEventFiring();
        }

Ֆորում քննարկում: Լավագույն փորձեր կիրարկման համապատասխանության Ոչ սովորական MOSS միջավայր

A ընկեր, "Mark", սկսել է ստեղծել պոտենցիալ հետաքրքիր Լսեք քննարկման շրջանակներում մասին հիմնադրման գերազանց Sharepoint կառավարման սկզբից" համար 35,000 Օգտվողի միջավայր.

Քննարկումը այստեղ: http://groups.google.com/group/microsoft.public.sharepoint.portalserver/browse_thread/thread/6d9a738d981af772/1c390b15c5407db6?#1c390b15c5407db6

Փոփ - ին ավարտվել է, եւ նպաստել!

</վերջ>

Custom Action URL չի Ցուցադրել Նոր հնարավորությունը

I’m still in the habit of crafting my feature XML files by hand since it’s all quite new to me. I don’t want to rely on a front-end tool that does stuff I don’t understand (նա ասել է նա գրել օրագիրը մուտքն օգտագործման գործիք, թե չի հասկանում).

Այսօր, I was trying to add a custom action to the site settings but it just wouldn’t show up. I could install the feature and see it in the site features, բայց երբ ես ակտիվացրել եմ (առանց սխալի) պարզապես չի ցույց մինչեւ բացվող ընտրացանկում.

I finally realized that I misspelled "SharePoint" ի Location հատկությունն է <CustomAction> հանգույց. This is the bad elements.xml file:

<?XML Նամակ տարբերակ="1.0" կոդավորում="UTF-8" ?>
<Elements xmlns="http :/://schemas.microsoft.com / SharePoint /">
  <CustomAction
 Id="SiteActionsToolbar"
 GroupId="SiteActions"
 Որտեղից:="Microsoft.Sharepoint.StandardMenu"
 Հերթականություն="100"
 Վերնագիր="Բարեւ Ձեզ!"
 Նկարագրություն="Custom մենյու ակցիան ավելացրել միջոցով հնարավորությունը."
 ImageUrl="_layouts / images / menuprofile.gif">

    <UrlAction Url="http :/://www.xyzzy.com"/>

  </CustomAction>
</Elements>

Լավ:

<?XML Նամակ տարբերակ="1.0" կոդավորում="UTF-8" ?>
<Elements xmlns="http :/://schemas.microsoft.com / SharePoint /">
  <CustomAction
 Id="SiteActionsToolBar"
 GroupId="SiteActions"
 Որտեղից:="Microsoft.SharePoint.StandardMenu"
 Հերթականություն="100"
 Վերնագիր="Բարեւ Ձեզ!"
 Նկարագրություն="Custom մենյու ակցիան ավելացրել միջոցով հնարավորությունը."
    >
    <UrlAction Url="http :/://www.xyzzy.com"/>
  </CustomAction>
</Elements>

That one took me a good two hours to figure out 🙂

Ես մխիթարել է նրանում, որ մի օր ապագայում, Ես կարող ասել, համոզմունքով, "back in the day, Ես ստիպված էի քայլել երեք մղոն է բլրի է ձյան (բոբիկ!) in order to deploy a custom feature to MOSS. You kids, դուք չգիտեք, թե ինչպես հեշտ ունեք այն! Get off my lawn!"

Հնարավոր չէ սպասել.

</վերջ>

Արորդիների Tags: ,

Օրագիր խմբին

I thought some people might be interested in my blog’s statistics. You can use mine as a benchmark to compare your own.

I’m running my blog on windows live spaces. They collect stats for me and I don’t know any way to control that. It’s good as far as it goes, but it’s fairly limited in that I can’t do much actual analysis with it. I’d love, օրինակ, to be able to generate a listing of my most frequently hit posts but I can’t do that without a prohibitive manual process. If someone knows better, խնդրեմ ասեք ինձ.

Live տարածքների կարգավիճակը ինձ: ընդհանուր քանակին օրվա, total hits for the week and total hits since day zero. It also tells me what people did to get to my blog (e.g. Google Խմբերի սկզբնական էջ, MSDN ֆորում հղում, եւ այլն:).

Որոշ առումներով, a "hit" ակնհայտ է. Եթե ​​դուք կարդում այս նախադասության հենց հիմա, դու գրեթե անկասկած գրանցվել որպես մեկ հարվածից.

RSS is a little confusing. On one hand, I see individual RSS hits all day long. Սակայն, I also see RSS "sweeps". A sweep is when I see 20 կամ 30 RSS hits all within a one or two second window. I assume these are automated things like google checking in on my site, գուցե ուրիշների պատուհաններ … not sure. They are definitely some kind of automated process. I cannot tell, սակայն, how many of my total hits are automated and how many have an actual human on the other side. I would guess at least 100 Հիթեր մեկ օրում են ավտոմատացված.

Դեպի թվերի!

Ես գրեցի իմ առաջին բլոգային գրառումը հուլիսի 27 - ին, 2007.

Ես գրել մոտ 60 բլոգային վեր, ավելի 50 որոնք ուղղակիորեն վերաբերում են SharePoint.

Ես սկսեցի հետեւել իմ փնտրման է աղյուսակի օրական վերջում սեպտեմբերին.

Ամսական ՍԿՍՎՈՒՄ:

Առաջին շաբաթ: Ընդհանուր Hits
Հոկտեմբեր 1,234
Նոյեմբեր 2,162
Դեկտեմբեր 3,071
Հունվար 2008 4,253

Ընդհանուր եւ Month

Ամիս Ընդհանուր Hits
Հոկտեմբեր 6,620
Նոյեմբեր 11,110
Դեկտեմբեր 13,138

Բարձր Ջրի նշանները

Տիպ Ընդհանուր Hits
Լավագույն օր 958
Լավագույն շաբաթ 4,253
Ընդհանուր Hits օրվանից Zero 42,438

Ինձ հետաքրքրում է մյուսներից’ stats. If you care to share yours in the comments, խնդրում եմ!

</վերջ>

Արորդիների Tags:

Կիրակի առավոտյան Զվարճալի: “Yeah, yeah, yeah. Բարբաջանք, բարբաջանք, blah.”

Մոտ վեց տարի առաջ, իմ չորս տարեկան որդին եւ ես վեր դիտում Discovery Channel "shark attacks" հատուկ (հնարավոր է այս մեկը). He was very young at the point and I was always worried what he might see on a show like this and how he might take it. I didn’t want him to develop, օրինակ, որեւէ հատուկ մտավախություն ջրի կամ շատախոս բան անհամապատասխան իր ընկերներին եւ հնարավոր է, որ մանկական ընկեր ցանցը գալ crashing նվազել.

Discovery handles these kinds of subjects very well. It’s not about creating a վախը մի բան, but rather to show how unusual it is for sharks to attack humans.

Այնքան, we’re watching it and there is this one particularly scary attack involving a small girl. As Discovery is building the drama of the attack, իմ ձայնը (որը միշտ եղել է խիստ դյուրագրգիռ Թեմա), is getting very excited. I make some noises about how unusual it is for sharks to attack people, and how bad the poor girl must feel. I’m trying to explain that people recover from these events and become stronger for it. Սակայն, I had misinterpreted his excitement. He was not worried about the girl at all. Փոխարեն, իսկ clapping իր ձեռքերը, նա պատմում է ինձ, "The sharks love it! It’s terrific. It’s wonderful. Its a DREAM COME TRUE!"

Մտածեցի այս զվարթ, but also very disturbing. Մի կողմից, Ես ուրախ եմ — նույնիսկ մի քիչ հպարտ — որ նա կարող է ունենալ ուժեղ empathic զգացմունքները, cross-species though they may be. As humans, we need to develop our "empathic muscles" այնպես խոսել, կամ դուք հայտնվում նման Այս guy 🙂 On the other hand, he was feeling cross-species empathy toward a species who was exhibiting behavior inimical to his own. I was really struggling with this when the narrator used the word "paradigm". My son picked up on that and asked me what that meant.

Դա այնքան հեշտ բառը նկարագրելու մի չորս տարեկան, but I gave it a try. When I think of the word "paradigm", Thomas Kuhn is never far from my thoughts. Ես կարդացի Կառուցվածքը եւ գիտական ​​հեղափոխությունների ետ Lafayette եւ լավ կամ վատ, the word "paradigm" is pregnant with extra meaning for me. (Sort of like the word "contact" լսելով ֆիլմ Phone ձայն ասա ինձ, ուր ես կարող էի տեսնել որ ֆիլմ [Մտածեցի, որ Գիրքը լավ]; Ես միշտ ասում եմ ինքս ինձ, "CONTACT!" whenever I see or hear someone say "contact").

Համենայն դեպս, Ես փորձում եմ բացատրել իրեն Kuhnian սահմանումը, that it’s "a historical movement of thought" and that it’s a "way of thinking with a number of built-in assumptions that are hard to escape for people living at that time." Իհարկե, Դուք չեք կարող խոսել նման մի չորս տարեկան, so I’m trying to successively define it to smaller pieces and feeling rather proud of myself as I do so. (Ես ճանաչել ինչ - որ մեկը դուրս վարժարանի, որ մտածում են, որ ես կարդացել Kuhn!).

I’m just warming to the task when he interrupts me. Waving his hand իմ գլխավոր ուղղությամբ եւ երբեք հաշվի իր աչքերը դուրս այլ դաժան Shark attack, նա պարզապես ասում է,, "Yeah, yeah, yeah. Բարբաջանք, բարբաջանք, blah.".

So much for that 🙂

Այդ պահին, Ես որոշել եմ փախչել, հռետորական խոսքը, նստել վերադառնալ, եւ վայելել դիտելով Շնաձկներ գրոհային մարդկանց իմ որդու հետ.

</վերջ>

Արորդիների Tags:

Switch տեսք Դիտել Ելնելով օգտվողի ID-ին տված InfoPath ձեւ

Մենք զարգացած է InfoPath ձեւ բազմաթիվ դիտարկումներ է աջակցելու նոր Վարձակալություն / on-boarding process. When the company hires a new person, ՏՏ վարչության եւ այլ խմբերը պետք է քայլեր ձեռնարկել (ստեղծել Աշխատավարձային, հնարավորություն են տալիս մուտք դեպի համապատասխան ծրագրեր, Տեղադրեք մի գրասեղան, եւ այլն:). We use on form but a different view of the form for each of those functions.

At this company, most of the people involved in the business process are IT-savvy, so when they access the form, their default view is a "menu" view with buttons that direct them to their specific function. Սակայն, we needed to simplify things for the new hire’s direct manager. This person should not see any of the IT related stuff. Ի դեպ, she should see just one view of the form and not even have an option to see the other views.

Մեր դեպքում,, that direct manager’s account is directly tied to the form courtesy of a contact selector (which I am always wanting to call a "people picker" for some reason).

The steps are as follows:

1. In design mode, go to Tools -> Form Options -> Open and Save.

2. Select "rules".

3. Create a new rule whose action is "switch to view" and whose condition leverages the userName() ֆունկցիա.

Մականուն() returns the "simple" user name without the domain. If I log into SharePoint with credentials "domain\pagalvin", Մականուն() returns "pagalvin".

The contact selector provides three bits of information for a contact. The "AccountID" portion is most useful for this scenario. The only thing that makes this even a little bit of challenge is that the contact selector (in my environment anyway) returns the domain and user ID, as in "domain\pagalvin". This prevents us from doing a straight-forward equality condition since AccountID ("domain\pagalvin") will never equal userName() ("pagalvin").

We can get around this using the "contains" operator: AccountID contains userName().

Մենք կարող ենք վերցնել այն ավելի ու նախընտրական pend է դժվար կոդավորված դոմեյն դիմաց Մականուն() գործառույթ ստանալ մեր հավասարություն ստուգել եւ վերացնել վտանգը կեղծ դրական է պարունակում օպերատորին.

We would have REALLY like to automatically switch view for other users based on their AD security group membership. Օրինակ,, when a member of the "IT Analytics" Խումբը, որին accesses ձեւը, automatically switch to the IT Analytics view. We didn’t have time to implement it, but my first thought is to create a web service that would have a method like "IsMemberOfActiveDirectorySecurityGroup", անցնում այն ​​Մականուն() and return back true or false. Does anyone have any other, ավելի խելացի միտք? Is there any SharePoint function we can leverage from InfoPath to make that determination?

</վերջ>

Արորդիների Tags:

Պատահաբար Ավելացնելով օրենսգիրքը որպես InfoPath ձեւ; Կանխամտածված այն հեռացնելու

Երբ աշխատում կոճակները ձեւով, we often add rules. You access the rules editor from the properties of the button.

Երբ սեղմելով շուրջ արագ, it’s easy to accidentally click on "Edit Form Code" instead of "Rules …".

Առաջին անգամ ես այս, I canceled out of the code editor. Սակայն, when I tried to publish the form a little while later, it required that I publish as an "Administrator-approved form template (advanced)". I didn’t actually do any programming and I absolutely didn’t want to go through an unnecessary approval process. I was in a bit of panic at the time due to time constraints. To get past it, I simply restored a previous backup and continued. I had recently seen some blog posts about people going into the form’s XML to tweak things and I was afraid I would have to do something similar.

Այսօր, I did it again. Այս անգամ, I had a little more time on my hands and found that you can easily undo this.

Գնալ:

Tools -> Form Options -> Ծրագրավորում: "Remove Code"

It does not get much easier than that.

</վերջ>

Արորդիների Tags: ,