Разтвор на проблем: “FileNotFoundException” С моя функцията приемник.

Аз работех по функция миналата седмица, която ще добави някои събитие получател към екземпляр на конкретен списък. (Аз blogged малко за този списък приемника тук).

С помощта на командния ред, Мога да инсталирате компонента с грешка (но вижте по-долу за скрит грешка). Когато се опитах да разположи функцията на сайта, МОС се оплакват от FileNotFoundException"" грешка. Този блог пост описва как аз решавам то.

Това е грешка, която МОС ми показа в web браузъра:

Функцията "b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ не може да се инсталира, защото на товаренето на монтаж на приемници на събития "xyzzyFeatureReceiver_0" Неуспешно: System.IO.FileNotFoundException: Не може да зареди файл или сглобяване "xyzzyFeatureReceiver_0’ или един от нейните колонии. Системата не може да намери указания файл.
Име на файл: "xyzzyFeatureReceiver_0’
в System.Reflection.Assembly.nLoad(Име на AssemblyName, CodeBase на низ, Доказателства assemblySecurity, LocationHint на събрание, StackCrawlMark& stackMark, Булева throwOnFileNotFound, Булева forIntrospection)
в System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Доказателства assemblySecurity, StackCrawlMark& stackMark, Булева forIntrospection)
в System.Reflection.Assembly.InternalLoad(AssemblyString на низ, Доказателства assemblySecurity, StackCrawlMark& stackMark, Булева forIntrospection)
в System.Reflection.Assembly.Load(AssemblyString на низ)
в Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Регистрирането на обвързването на събранието е включен OFF.
За да разрешите на регистриране на отказ за събрание bind, Задайте стойност на системния регистър [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) за да 1.
Бележка: Има някои производителността санкция, свързани със сглобяване bind грешка регистриране.
За да изключите тази функция, премахване на стойността в системния регистър [HKLMSoftwareMicrosoftFusion!EnableLog].

Отстраняване на проблеми с Windows SharePoint Services.

Аз знам как да причиняват съзнателно тази грешка: не инсталирайте събрание в GAC. Но, Тя е в GAC. Обикновено инсталирате възли в GAC плъзгайки ги в c:\windowsassembly папка, като използвате windows explorer. Никога не съм се чувствал 100% удобни го направи, защото винаги мислех, че gacutil съществувал по причина … така че аз се опитах това. Го прави никаква разлика.

Аз търсили Internets и намери този пост: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

Плаката се случи да използва същия корен бит на код (от вътрешната WSS книга от този списък) така че е надежда знак. Въпреки това, предложение на decorating общото събрание със [събрание: ] Директива не правят смисъл за мен. Аз все пак съм опитвал и бях прав. Го прави никаква разлика.

След това забелязах, че моята дефиниция на клас не е публично. Аз го публично и че прави никаква разлика.

Следващ, Отидох да съдейства "събрание bind неизправност регистър на" (след полезен и точни инструкции предоставена) и това е, когато нещата започнаха да се получи интересно. Че вляза ми показва, че runtime е търсене навсякъде на този сървър за моя монтаж. Тя дори изглежда да се търси за нея в моя кабинет лекарство. Но … той няма да го потърсите в GAC.

Сложи на моите зимно яке и отидете търсене Internets отново и откриете, че някой е имал този проблем също. Продължителни дискусии в това публикуване Питърс разстояние в нищо и не мога да намеря решение.

Аз движа ми събрание в едно от местата, log твърди е търсене и направя малко по-голям напредък. Съм възнаградени с нова грешка в браузъра, когато се опитате да активирате функцията:

Не можа да създаде обект за приемник на функцията от събрание "xyzzyFeatureReceiver_0", Въведете "Conchango.xyzzyFeatureReceiver" за функцията b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Стойността не може да бъде нулев.
Име на параметър: тип
в System.Activator.CreateInstance(Тип тип, Булева nonPublic)
в System.Activator.CreateInstance(Тип тип)
в Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Отстраняване на проблеми с Windows SharePoint Services.

Време за един последен пътуване до Internets!

Този път разберете, достатъчно предсказуемо, че Мос издава тази грешка, защото общото събрание не е в GAC.

Искам да получи нещо положителни извън това и се опитайте да се чувства малко горд, че съм създаден Fugitive MSIL възли, но това не е работа. Аз съм само обикновен безпокоя. Да намеря себе си мърмори "кокошката или яйцето" под моето дъх.

Най-накрая реши да шута. Създам един изцяло нов проект и Копирайте кода от проекта за incredible-cloaked-from-the-GAC-assembly не работят над към този нов проект. (Аз гледам за билд флаг, наречени нещо като "Скрий от събрание, задължителни, ако инсталирани в GAC" но не може да намери една).

I инсталирате компонента и да го активирате и … тя работи! Така, след всичко това, Аз трябваше да основно "рестартиране’ Моят проект. Това е още една причина, защо мразя компютри.

Аз научих нещо полезно от това. Са слагали функции, които използват stsadm заповядвам линия през целия ден и използвали "-сила" опция от вредния навик. По някаква причина, Не използвайте опцията - force когато Инсталирах новия проект. Този път, Направих действително, наистина забравяме да копирате този нов проект събрание в GAC. Като резултат, Получих че "FielNotFoundException" грешка. Този път, Имам го от stsadm, не и когато се опитах да активирате функцията чрез web браузър. Така, -сила всъщност играе две роли. Тя ви позволява да инсталирате отново съществуваща функция. Той също така ви позволява да инсталирате бъги функция, която не може да работи по време на изпълнение чрез потискане грешка. То вероятно казва колкото в помощта някъде, но аз никога не го е забелязал.

</край>

3 мисли за "Разтвор на проблем: “FileNotFoundException” С моя функцията приемник.

  1. Франсиско

    Също, Имах моя 2 часове на hysteric nintendoSIXTYFOURRRR на a лошо начин моменти, когато аз преименува Namespace функцията приемник, за да се проследяват където вашето или всеки друг на започва.

  2. Франсиско

    Корените на проблема е разположена на разположените wsp в базата данни на sharepoint. Четох си пост и докато тя наистина да коригира проблема имаме огромен решение с няколко проекта и десетки на файлове, така че преместването всичко не е опция.

    Без значение колко можете да актуализирате вашия Гранули или вашето събрание, Какво е като ви проблем е общото събрание в текущия WSP, инсталирани на sharepoint.

    Можете лесно да че забелязали като се опитва да само се прибират разтвора (което е, където се случи грешката). Всичко се случва на "пренавиване време" трябва да се считат за "разгърната wsp"-само не самия проект.

    Моят заобиколно решение е:

    – Централен администратор: Разтвор на отказ
    – stsadm: deletesolution
    – Visual Studio => Проект => Пакет
    – stsadm: addsolution-ProjectbinDebugProject.wsp на файл
    – stsadm: deploysolution-името project.wsp-незабавно - allowgacdeployment-сила
    – Visual Studio => Разполагане

    Аз също изтрити СК и трасирате папки от проекта преди да изпълните отново разполагане, може да няма никакъв ефект, но си струва представянето им.

    Това работи за двете

    "Функция … не може да се инсталира, защото на товаренето на монтаж на приемници на събития"
    и
    "Не можа да създаде обект за приемник на функцията от събрание"

    Благодаря!
    Франсиско

  3. Том Кларксън

    Прекарах няколко часа опитва да разрешите този същия проблем и намерих по-добро решение отколкото просто пресъздаване на проекта.

    Оказа се, че по някаква причина, Visual Studio е определена целта на изграждане на x 86 вместо x 64 или MSIL – Общото събрание е в GAC, просто не една и съща GAC, 64 малко SharePoint е търсил в.

Оставете отговор

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани *