Ошибка WSE032, WebServicesConfiguration не удается загрузить конфигурацию.Раздел
-
20-09-2019 - |
Вопрос
Я разработал небольшой инструмент для загрузки информации о зарплате в швейцарскую администрацию и успешно использовал WSE 3.0.Но теперь один из моих клиентов сообщил, что на его компьютере моя программа выходит из строя со следующей трассировкой стека:
WSE032: There was an error loading the microsoft.web.services3 configuration section.
at Microsoft.Web.Services3.Configuration.WebServicesConfiguration.get_Current()
at Microsoft.Web.Services3.Configuration.WebServicesConfiguration.get_MessagingConfiguration()
at Microsoft.Web.Services3.WebServicesClientProtocol..ctor()
...
Я пытался понять, что это значит, но должен признать, что здесь я немного заблудился.Программа имеет .exe.config
файл со следующим содержимым:
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="microsoft.web.services3" type="Microsoft.Web.Services3.Configuration.WebServicesConfiguration, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
...
</configSections>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
<microsoft.web.services3>
<security>
<x509 allowTestRoot="false" storeLocation="CurrentUser" skiMode="RFC3280"/>
</security>
</microsoft.web.services3>
...
</configuration>
Удаление <security>
узел из приведенного выше XML вроде того устраняет проблему (ошибка WSE032 исчезает), но в моем случае это не решение, поскольку мне нужно настроить безопасность таким образом, чтобы иметь возможность подписывать данные, которые я передаю позже.
Есть какие-нибудь идеи, в чем может быть проблема.Очевидно, что WSE 3.0 был установлен на компьютере клиента, поскольку в противном случае трассировка стека не показала бы его вызывающим устройствам до возникновения ошибки WSE032.
Решение
Похоже, что клиент выполнял программу с буквы диска, установленной на общем ресурсе;несмотря на то, что я думал, что .NET 3.5 SP1 предоставляет привилегии полного доверия бывшим, запущенным с LocalIntranet_Zone
, похоже, это проблема с загрузкой раздела конфигурации WSE исполняемого файла.
Чтобы исправить это, я побежал caspol
который можно найти здесь:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\caspol.exe
Командная строка - это что-то вроде:
caspol -m -ag LocalIntranet_Zone -url N:\* FullTrust -n "name" -d "description"
для общего ресурса, смонтированного на букве диска N:
;обратите внимание , что name
и description
являются чисто информационными.
Эта команда выдает все исполняемые файлы, найденные на диске N:
в FullTrust
привилегии, точно так же, как если бы они были запущены с локального ресурса (например, с жесткого диска).
Видишь Как сделать:Предоставление разрешений для папок и сборок на MSDN.