WCF: не удалось загрузить файл или сборку, система не может найти указанный файл

У меня есть служба WCF, размещенная в IIS 6/7. Я пробовал разные вещи с файлом .svc, но не могу заставить его работать. Я всегда получаю FileNotFoundException «Не удалось загрузить файл или сборку« XYZ »или одну из ее зависимостей. Система не может найти указанный файл».

Сборка находится в папке bin, а не в GAC. Но X.Y.Z — это пространство имен и имя класса, поэтому сервер ищет неправильное имя файла сборки. Трассировка загрузки сборки подтверждает, что она ищет XYZDLL в разных местах, но это пространство имен и имя класса... XYDLL будет сборкой.

Я попробовал svc, сгенерированный Visual Studio 2010, и я изменил его, чтобы он содержал только полное имя.

<%@ ServiceHost Service="X.Y.Z, X.Y, Version=1.0.2.0, Culture=neutral, PublicKeyToken=xxxxx" %>

person Turrau    schedule 09.08.2011    source источник


Ответы (3)


Используйте средство просмотра журнала привязки сборки, чтобы увидеть места, которые clr ищет для запрошенной сборки — http://msdn.microsoft.com/en-us/library/e74a18c4(v=VS.100).aspx

person Rory Primrose    schedule 09.08.2011
comment
У меня уже есть журнал привязки, он ищет правильное место, но не тот файл (X.Y.Z.DLL)... - person Turrau; 09.08.2011
comment
Вы очистили кэш aspnet сайта в каталоге framework? - person Rory Primrose; 09.08.2011
comment
Нет, никогда не делал этого раньше, это путь: aspdotnetfaq.com/Faq/ ??? - person Turrau; 10.08.2011
comment
Нет, я имел в виду удаление копии приложения, хранящейся в iis во временных каталогах. См. блоги. .msdn.com/b/dougste/archive/2008/08/11/. Мне никогда не нужно было доходить до той степени, на которую указывает пост. Я просто делаю iisreset, а затем вручную удаляю каталоги через проводник Windows. - person Rory Primrose; 11.08.2011

Сообщение об ошибке может вводить в заблуждение. Попробуйте создать тестовую страницу в том же проекте и создать экземпляр класса обслуживания из имени типа. При переходе на эту тестовую страницу должно появиться правильное сообщение об ошибке о том, какие сборки не удалось найти. Вы можете использовать следующий код, например.



    Type serviceType = Type.GetType("X.Y.Z, X.Y, Version=1.0.2.0, Culture=neutral, PublicKeyToken=xxxxx");
var serviceInstance = Activator.CreateInstance(serviceType);
Response.Write(serviceInstance);
person Kiran Mothe    schedule 09.08.2011

Есть ли в этом WCF какие-либо сторонние библиотеки, которые требуют, чтобы пул приложений был либо 32-разрядной, либо 64-разрядной версией? Убедитесь, что AppPool установлен на классический, интегрирован надлежащим образом

person HydTechie    schedule 13.02.2015