WCF устанавливает разные конечные точки культуры в web.config - PullRequest
0 голосов
/ 10 ноября 2011

У меня есть служба WCF, которую мне нужно локализовать для нескольких разных культур, в основном, с сообщениями об ошибках и ответами на разных языках.Вместо того, чтобы полагаться на анализ чего-либо из заголовка запроса, я склоняюсь к предоставлению различных конечных точек для каждой из культур поддержки.Например, я хотел бы иметь разные URL-адреса в соответствии с:

http://server/mycompany-rest/v1.0/service.svc
http://server/mycompany-rest/v1.0/service.svc/fr
http://server/mycompany-rest/v1.0/service.svc/cn

Я думаю, чтобы этот подход был осуществим, мне нужно было бы иметь возможность настроить его в моем файле web.config в соответствии с:

<system.serviceModel>
  <services>
    <service name="MyCompany.Service.Rest.SomeService">
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      <endpoint address="" binding="webHttpBinding" behaviorConfiguration="WebBehavior" contract="MyCompany.Service.Rest.ISomeService"/>
      <endpoint address="fr" binding="webHttpBinding" behaviorConfiguration="WebBehaviorFrench" contract="MyCompany.Service.Rest.ISomeService"/>
      <endpoint address="cn" binding="webHttpBinding" behaviorConfiguration="WebBehaviorChinese" contract="MyCompany.Service.Rest.ISomeService"/>
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior>
        <serviceMetadata httpGetEnabled="true"/>
        <serviceDebug includeExceptionDetailInFaults="false"/>
      </behavior>
    </serviceBehaviors>
    <endpointBehaviors>
      <behavior name="WebBehavior">
        <webHttp/>
      </behavior>
      <behavior name="WebBehaviorFrench">
        <webHttp/>
        <culture value="fr" />
      </behavior>
      <behavior name="WebBehaviorChinese">
        <webHttp/>
        <culture value="zh-cn" />
      </behavior>
    </endpointBehaviors>
  </behaviors>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>

Я понимаю, что нет элемента культуры для поведения конечной точки, но будет ли такой подход осуществимым с пользовательским поведением?Или в качестве альтернативы есть лучший способ сделать это?

1 Ответ

0 голосов
/ 01 мая 2012

Существует аналогичное обсуждение наличия разных конечных точек WCF для локализации здесь:

http://geekswithblogs.net/dlanorok/archive/2007/07/18/Dynamic-Configuration-for-WCF-Service-Base-Address.aspx

Похоже, речь идет только о конфигурации сервера ... клиент все еще должен явно выбрать конечную точку, названную в соответствии с культурой.

У меня вопрос более общий ... есть ли способ динамически выбирать конечную точку на основе чего-то вроде OperationContext ...

...