Добавление привязок веб-службы в SharePoint web.config с использованием SPWebConfigModification - PullRequest
0 голосов
/ 30 июня 2010

У меня есть веб-часть SharePoint, которая использует службу WCF. Чтобы использовать веб-службу в моей веб-части, мне нужно изменить файл web.config SharePoint, включив в него привязки и конечные точки.

Какой лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Это было очень полезно, но немного пропустило. В то время как код может быть развернут, его нельзя отозвать, потому что имя не было присвоено.

Использование:

modification.Name = "bindings";

Кроме того, сказав, что это привязки, вы (вероятно) все еще не можете применить настройки, если там уже есть настройки для:

serviceHostingEnvironment aspNetCompatibilityEnabled="true"  

... внутри system.serviceModel

Я использовал эту технику для вставки привязок, и затем конечная точка клиента вставляется отдельно, так как она может меняться в зависимости от установки и в моем случае устанавливается с помощью записи в списке sharepoint.

0 голосов
/ 24 августа 2011

Чтобы сделать это, я поместил конфигурацию своего веб-сервиса в текстовый файл в качестве шаблона. Содержимое текстового файла (BindingTemplate.txt) выглядит следующим образом:

<system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_AuthenticationInterface" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="http://{0}/MyWebService/AuthenticationService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_AuthenticationInterface" contract="AuthenticationService.AuthenticationInterface" name="BasicHttpBinding_AuthenticationInterface" />
</client>

Я использовал следующий код C # для изменения файла web.config:

string content;
string WebServiceServer = "example.com"; // <=== your host-name here
using (TextReader tr = File.OpenText(bindingFilePath))
{
    content = String.Format(tr.ReadToEnd(), WebServiceServer);
}

SPWebConfigModification modification = new SPWebConfigModification("system.serviceModel", "configuration");
modification.Value = content;
modification.Sequence = 0;
modification.Type =SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode;
modification.Owner = OWNER_CONSTANT;

webApp.WebConfigModifications.Add(modification);

Я провел некоторое время, выясняя это. Надеюсь, это кому-нибудь поможет.

...