Problem həll: “FileNotFoundException” Mənim Feature qəbuledicisi.

I was working on a feature last week that would add some event receivers to a specific list instance. (Mən burada bu siyahıya alıcı haqqında bir az blogged).

Command line istifadə, Mən heç bir səhv ilə xüsusiyyət quraşdıra bilərdik (ancaq gizli səhv üçün aşağıya baxın). When I tried to deploy the feature on the site, MOSS complained of a "FileNotFoundException" səhv. This blog entry describes how I solved it.

This is the error that MOSS showed me in the web browser:

Feature ‘b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ could not be installed because the loading of event receiver assembly "xyzzyFeatureReceiver_0" failed: System.IO.FileNotFoundException: Could not load file or assembly ‘xyzzyFeatureReceiver_0’ onun bağımlılıkları və ya bir. The system cannot find the file specified.
File name: ‘xyzzyFeatureReceiver_0’
at System.Reflection.Assembly.nLoad(Fayl AssemblyName, Simli codeBase, Sübut assemblySecurity, Assambleya locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Sübut assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(String assemblyString, Sübut assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.Load(String assemblyString)
at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) üçün 1.
Qeyd: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

Troubleshoot issues with Windows SharePoint Services.

I know how to deliberately cause that error: don’t install the assembly in the GAC. Lakin, 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% Mən həmişə gacutil səbəbdən mövcud düşündüm, çünki rahat bunu … so I tried that. It made no difference.

Mən Internets axtarış və bu post tapılmadı: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

Plakat kodu eyni kökdən bit istifadə oldu (Bu siyahıda olan Inside WSS kitabından) so that was a hopeful sign. Lakin, bir ilə bəzəyən toplaşmaq təklifi [yığma: ] 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.

Sonrakı, I went to the trouble of enabling the "assembly bind failure log" (following the helpful and accurate instructions provided) 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. Lakin … it won’t search for it in the 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" for feature b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Dəyər null ola bilməz.
Parametre adı: növü
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Activator.CreateInstance(Type type)
at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Troubleshoot issues with Windows SharePoint Services.

Time for one last trip to the Internets!

This time I find out, predictably enough, that MOSS issues this error because the assembly is not in GAC.

I want to get something positive out of this and try to feel a little proud that I’ve created the Fugitive of MSIL assemblies, but it’s not working. I’m just plain annoyed. I find myself muttering "chicken or the egg" under my breath.

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" but can’t find one).

I install the feature and activate it and … it works! Belə, after all that, I had to basically ‘reboot’ my project. This is another reason why I hate computers.

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. Nədənsə, I did not use the -force option when I installed the new project. Bu dəfə, I did actually, truly forget to copy this new project’s assembly into the GAC. Nəticəsində, I received that "FielNotFoundException" səhv. Bu dəfə, Mən stsadm onu ​​əldə, not when I tried to activate the feature via the web browser. Belə, -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.

</son>

Bazar Funny: Yuxarı 10 Sizin həyat yoldaşı annoy yolları

  1. Əgər siz artıq soyuducuda kifayət qədər daha çox var zaman brokoli al.
  2. Go for a run. Cool off. Take off clean pillow case and replace with T-shirt. Cover with clean pillow case.
  3. Sürücülük zaman, biz bir yol küçə aşağı yanlış yol getməlidir, xahiş.
  4. Uğrunda 15 il, hər bazar günü sizin həyat yoldaşı bir muzey gedən göstərir ki,, muzey bazar üzrə açıq ifadə sürpriz.
  5. Uğrunda 15 il, occasionally suggest going to the local book store on Sunday. Express surprise that they are not open on Sunday’s (thanks a lot Blue Qanunlar!).
  6. Istifadə 20 bir etmək bal 3 point turn.
  7. Sərin erkən Fall günortadan sonra, 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, səfeh" və onu söndürmək üçün qalxır, grab the warm spot she had on the couch. Bonus points if she does not realize you did it until much later.
  8. Dadlı ağ albacore tuna bir bilər açın və ola bilərsiniz düz yemək, yataq, gecə.
  9. Həyat yoldaşı yeməyi yemək isə mətbəx dön, həyat yoldaşı screams qədər ətrafında bıçaq Ray və təkan qabları açmaq, "what are you looking for!"
  10. Yeni iş kartları alınması haqqında, gizli bütün ev ətrafında onlara yerləşdirmək: Yatağı əsasən, yastıq hallarda, qəhvə fincan daxilində, onun pul, palto ciblərindən, avtomobil əlcək compartments, kiler — anywhere you can think of.
  11. Sizin həyat yoldaşı haqqında blog entries yazın.
  12. Ayılmaq.
  13. New York küçələrində gəzinti zaman, be on the alert for "crusty" objects on the ground. Nəzərə sizin həyat yoldaşı xüsusi qorxu saxlanması, bir qədər ala və xahiş kimi aşağı olmaq, "hmm, Hesab edirəm ki, nə təəccüb?" (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! O, bunu oldu yenidən!"
  15. Write "top 10" yoxdur siyahıları 10 maddələr.

===

Bonus həyat yoldaşı zarafat:

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, biz yemək başa zaman, ki, xörəkpaylayan ilə gəldi və biz yemək xoşuma gəldi necə istədi. Mən deyirəm nəzərdə, ‘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, əvəzində mən ona qışqıraraq, ‘You ruined my life!""

</son>

Technorati Tags:

Olay ID 1023: “Windows genişlənən counter DLL MSSCNTRS yük bilməz”

UPDATE (04/08/08): I seem to have solved this problem. From the command line, I ran "c:\windows system32 lodctr / R" InstallShield problemlər haqqında söhbət giriş başına ki, mənim üçün həll görünür.

Hesab edirəm ki, son vaxtlar hiss, 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 genişlənən counter DLL UGatherer yük bilməz, data Bölmə ilk DWORD Windows hata kodu edir.

Windows genişlənən counter DLL UGTHRSVC yük bilməz, data Bölmə ilk DWORD Windows hata kodu edir.

Windows genişlənən counter DLL MSSCNTRS yük bilməz, data Bölmə ilk DWORD Windows hata kodu edir.

Mən o mesaj bir detallarını daxil qazmaq edin, Mən bu almaq:

Mənbə: Perflib

Növü: Səhv

Kateqoriya: Yox

Olay 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 çox bir müddət üçün bir güncelleştirme yerinə mənə sürtüşkən edilmişdir, mən yüklü idi versiyası aşağı jotted (apparently "1.0.1 build 29996") and did the update. This upgraded me to v1.04. Qubarlı, bu məsələ düzeltmek etməyib.

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, belə … not such a great option.

Ev sahibi əməliyyat sistemi Windows XP edir 64 parça.

Mən bu həmişə baş düşünmürəm, ancaq səbəb ola bilər ki, hər hansı bir hadisə yada yoxdur.

Mən kompüter nifrət Buna görə.

</son>

Technorati Tags:

Sürətli & Asan: Bugün üçün hadisə Alıcı Via SharePoint Object Model istifadə Uploaded File Rename

UPDATE: This works but there are significant limitations which are described in the comments. This may still be useful in some cirumstances.

UPDATE 2: Mənim cari layihə, users always upload documents. Nəticəsində, 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() alıcı əslində adını dəyişmək həyata əvvəl və o vaxtdan bəri orada düzgün değer axtarır, 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()" üsul. Əvəzində, Biz istifadə "MoveTo(…)". Here is a minimal bit of code to accomplish this:

 ictimai alıqlamaq ləğv ItemAdded(SPItemEventProperties xassələri)
        {
            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.

Bu, eyni şey ki, daha faydalı versiyası, but assigns the name of the file to "Title":

 ictimai alıqlamaq ləğv ItemAdded(SPItemEventProperties xassələri)
        {
            DisableEventFiring();

            // Fayl özü adı ilə bu bəndin adı Təyin.
 // QEYD: Biz fayl özü dəyişdirmək əvvəl təyin yer almalıdır.
 // Yeniləmə Calling() ki, SPFile üzrə xüsusiyyətlərini etibarsız görünür
 // müəyyən mənada.  Updates to "Title" dəyişiklik qədər uğursuz (və yeniləmə() çağırmaq)
 // fayl adı dəyişikliyin qarşısında köçürülüb.
            properties.ListItem["Title"] = Properties.ListItem.File.Name;

            properties.ListItem.Update();

            SPFile f = properties.ListItem.File;

            // Fayl uzadılması alın.  Biz sonra ehtiyac.
 sim spfileExt = yeni Fayl haqqında məlumat(f.Name).Artırma;

            // Siyahısı maddənin ID fayl adını dəyişmək və saxlamaq üçün fayl uzantısı istifadə
 // vuruşa onun bir hissəsi.
            f.MoveTo(properties.ListItem.ParentList.RootFolder.Url +
                "/" + properties.ListItem["ID"] + spfileExt);

            // Hərəkət törətmək.
            f.Update();

            EnableEventFiring();
        }

Forum Müzakirə: Qeyri-cüzi MOSS Ətraf Mühit icrası Best Practices uyğunluq

A fellow, "Mark", has started up a potentially interesting newsgroup discussion focusing on "establishing excellent SharePoint Governance from the start" bir müddət 35,000 istifadəçi mühit.

Müzakirə burada: http://groups.google.com/group/microsoft.public.sharepoint.portalserver/browse_thread/thread/6d9a738d981af772/1c390b15c5407db6?#1c390b15c5407db6

Üzərində pop və yardım!

</son>

Xüsusi Action URL Yeni Özellik üçün ekran olmayacaq

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 (o dərk etmir bir alət istifadə edərək, blog giriş yazdığı dedi).

Bugün, 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, ancaq aktiv zaman (səhv olmadan) sadəcə açılan menyu göstərilir deyil.

I finally realized that I misspelled "SharePoint" Bu Yer özniteliğinde <CustomAction> node. This is the bad elements.xml file:

<?xml variant="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com / SharePoint /">
  <CustomAction
 Id="SiteActionsToolbar"
 GroupId="SiteActions"
 Location="Microsoft.Sharepoint.StandardMenu"
 Ardıcıllıq="100"
 Title="Salam!"
 Təsvir="Xüsusi menyu hərəkət xüsusiyyət vasitəsilə əlavə."
 ImageUrl="_layouts / images / menuprofile.gif">

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

  </CustomAction>
</Elements>

Yaxşı:

<?xml variant="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com / SharePoint /">
  <CustomAction
 Id="SiteActionsToolBar"
 GroupId="SiteActions"
 Location="Microsoft.SharePoint.StandardMenu"
 Ardıcıllıq="100"
 Title="Salam!"
 Təsvir="Xüsusi menyu hərəkət xüsusiyyət vasitəsilə əlavə."
    >
    <UrlAction Url="http://www.xyzzy.com"/>
  </CustomAction>
</Elements>

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

Mən gələcəkdə bir gün ondan teselli almaq, Mən məhkum demək edə bilərsiniz, "back in the day, Mən qar təpəyə üç mil gəzmək idi (ayaqyalın!) in order to deploy a custom feature to MOSS. You kids, siz nə qədər asan bilmirəm! Get off my lawn!"

Gözləyin bilməz.

</son>

Technorati Tags: ,

Blog Stats

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, məsələn, 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, please tell me.

Live spaces status tell me: total hits for the day, 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 forum link, və s.).

Bəzi yollarla, a "hit" göz qabağındadır. Siz indi bu cümlə oxu edirsinizsə, demək olar ki, əlbəttə ki, bir hit kimi qeydə etdik.

RSS is a little confusing. On one hand, I see individual RSS hits all day long. Lakin, I also see RSS "sweeps". A sweep is when I see 20 və ya 30 RSS hits all within a one or two second window. I assume these are automated things like google checking in on my site, bəlkə başqa insanların tarayıcılar … əmin deyil. They are definitely some kind of automated process. I cannot tell, lakin, 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 hits per day are automated.

On to the numbers!

I wrote my first blog entry on July 27th, 2007.

I have written approximately 60 blog entries since then, more than 50 of which directly relate to SharePoint.

I started to keep track of of my hits in a spreadsheet on a daily basis at the end of September.

Monthly Starts:

First week of: Total Hits
Oktyabr 1,234
Noyabr 2,162
Dekabr 3,071
Yanvar 2008 4,253

Total by Month

Month Total Hits
Oktyabr 6,620
Noyabr 11,110
Dekabr 13,138

High Water Marks

Növü Total Hits
Best Day 958
Best Week 4,253
Total Hits Since Day Zero 42,438

I’m interested in others’ stats. If you care to share yours in the comments, please do!

</son>

Technorati Tags:

Bazar Səhər Funny: “Bəli, Bəli, Bəli. Blah, blah, blah.”

Haqqında altı il əvvəl, my four-year-old son and I were upstairs watching a Discovery channel "shark attacks" xüsusi (bəlkə bu). 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, məsələn, hər special fears of the water or blab something inappropriate to his friends and possibly cause his baby friend network to come crashing down.

Discovery handles these kinds of subjects very well. It’s not about creating a fear of something, but rather to show how unusual it is for sharks to attack humans.

Belə, 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, my son (who has always been extremely jumpy anyway), 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. Lakin, I had misinterpreted his excitement. He was not worried about the girl at all. Əvəzində, əllərini alqış edərkən, O mənə deyir, "The sharks love it! It’s terrific. It’s wonderful. Its a DREAM COME TRUE!"

Mən bu şən idi düşündüm, but also very disturbing. Bir tərəfdən, Mən sevindim — hətta bir az qürur — O, güclü empathic hisslər var ki,, cross-species though they may be. As humans, we need to develop our "empathic muscles" so speak or you’ll end up like this 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.

That’s not such an easy word to describe to a four year old, but I gave it a try. When I think of the word "paradigm", Thomas Kuhn is never far from my thoughts. Mən oxumaq The Structure of Scientific Revolutions back at Lafayette and for better or for worse, the word "paradigm" is pregnant with extra meaning for me. (Sort of like the word "contact" after hearing a Movie Phone voice tell me where I could see that movie [I thought the book was better]; I always say to myself, "CONTACT!" whenever I see or hear someone say "contact").

Hər halda, I’m trying to explain to him a Kuhnian definition, 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." Əlbəttə, you can’t talk like to a four-year old, so I’m trying to successively define it to smaller pieces and feeling rather proud of myself as I do so. (I just knew that someone outside of college would care that I had read Kuhn!).

I’m just warming to the task when he interrupts me. Waving his hand in my general direction and never taking his eyes off another brutal shark attack, he just says, "Yeah, Bəli, Bəli. Blah, blah, blah.".

So much for that 🙂

Bu noktada, Mən qaçmağa qərar, rhetorically danışan, dala oturmaq, və oğlu ilə shirks hücum insanlar izləmək zövq.

</son>

Technorati Tags:

Bir InfoPath Form istifadəçi ID əsaslanır Məlumatlarına bax Switch

Biz yeni kirayə yardım üçün bir çox views ilə InfoPath form inkişaf etmiş / on-boarding process. When the company hires a new person, İT şöbəsi və digər qruplar hərəkətə keçməsi lazımdır (əmək haqqı qurmaq, müvafiq ərizə çıxışı təmin, bir masa tapmaq, və s.). 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. Lakin, we needed to simplify things for the new hire’s direct manager. This person should not see any of the IT related stuff. Faktiki olaraq, she should see just one view of the form and not even have an option to see the other views.

Bizim halda, 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() funksiyası.

İstifadəçi adı() returns the "simple" user name without the domain. If I log into SharePoint with credentials "domain\pagalvin", İstifadəçi adı() 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().

We can take it further and pre-pend a hard-coded domain in front of the userName() function to get our equality check and eliminate the risk of a false positive on the contains operator.

We would have REALLY like to automatically switch view for other users based on their AD security group membership. Məsələn, when a member of the "IT Analytics" group accesses the form, 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", pass it the userName() and return back true or false. Does anyone have any other, more clever idea? Is there any SharePoint function we can leverage from InfoPath to make that determination?

</son>

Technorati Tags:

Qəzayla əlaqədar InfoPath Form Kod durub; Bilərəkdən çıxarmazdan

Bir forma düymələri ilə işləyən zaman, we often add rules. You access the rules editor from the properties of the button.

Tez ətrafında tıklandığında, it’s easy to accidentally click on "Edit Form Code" instead of "Rules …".

Mən bunu ilk dəfə, I canceled out of the code editor. Lakin, Mən bir az müddət sonra şəklində dərc çalıştığımızda, it required that I publish as an "Administrator-approved form template (qabaqcıl)". 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.

Bugün, I did it again. Bu dəfə, Mən əlləri bir az daha çox vaxt var idi və asanlıqla bu geri ala bilərsiniz ki,.

Get:

Tools -> Form Options -> Proqramlaşdırma: "Remove Code"

Ki, daha asan əldə etmir.

</son>

Technorati Tags: ,