Я создаю обработчик событий в MS Project Server. Этот обработчик событий вызывает библиотеку классов (файл dll). Обработчик событий устанавливается и запускается из MS Project щелчками, а не кодом. В этой библиотеке классов у меня есть ссылка на веб-службу. Но всякий раз, когда событие запускается, я вижу следующую ошибку при отладке библиотеки классов с помощью параметра «Присоединиться к процессу»:
Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт PSS.Project.ProjectSoap в разделе конфигурации клиента ServiceModel. Это может быть связано с тем, что для вашего приложения не найден файл конфигурации или потому, что в клиентском элементе не может быть найден элемент конечной точки, соответствующий этому контракту.
Вот как выглядит мой app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="basicHttpBehavior">
<clientCredentials>
<windows allowedImpersonationLevel="Impersonation" />
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="basicHttpConf" sendTimeout="01:00:00" maxBufferSize="500000000"
maxReceivedMessageSize="500000000">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="500000000" />
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm" proxyCredentialType="Ntlm"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
<binding name="ProjectSoap">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm" proxyCredentialType="Ntlm" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://xxxx/pwa/_vti_bin/PSI/ProjectServer.svc"
behaviorConfiguration="basicHttpBehavior" binding="basicHttpBinding"
bindingConfiguration="basicHttpConf" contract="SvcProject.Project"
name="basicHttp_Project" />
<endpoint address="http://xxxx/pwa/_vti_bin/PSI/ProjectServer.svc"
behaviorConfiguration="basicHttpBehavior" binding="basicHttpBinding"
bindingConfiguration="basicHttpConf" contract="SvcResource.Resource"
name="basicHttp_Resource" />
<endpoint address="http://xxxx/pwa/_vti_bin/PSI/ProjectServer.svc"
behaviorConfiguration="basicHttpBehavior" binding="basicHttpBinding"
bindingConfiguration="basicHttpConf" contract="SvcStatusing.Statusing"
name="basicHttp_Statusing" />
<endpoint address="http://xxxx/pwa/_vti_bin/PSI/Project.asmx?wsdl"
binding="basicHttpBinding" bindingConfiguration="ProjectSoap"
contract="PSS.Project.ProjectSoap" name="ProjectSoap" />
</client>
</system.serviceModel>
</configuration>
Я также подтвердил, что URL: http://xxxx/pwa/_vti_bin/PSI/Project.asmx?wsdl
работает.
В файле cs ошибка появляется в следующем коде:
ProjectSoapClient projectSvc = new ProjectSoapClient();
Когда я делаю то же самое в консольном приложении, он работает, но когда я использую библиотеку классов, он терпит неудачу. Я прочитал здесь несколько вопросов и ответов, и я знаю, что когда я вызываю ссылку на службу из библиотеки классов, мне нужно включить файлы конфигурации ссылки на службу в библиотеку классов, но я не совсем уверен, как и куда передать config в моем случае и в какую часть app.config я должен его добавить.