Причина этого исключения в WCF - PullRequest
3 голосов
/ 28 сентября 2010

Я изучаю WCF и сейчас получаю одно исключение при запуске приложения: Исключение:

Не удалось найти конечную точку по умолчанию элемент, который ссылается на контракт «IService1» в клиенте ServiceModel раздел конфигурации. Это может быть потому что файл конфигурации не был найден для вашего приложения, или потому что нет элемента конечной точки, соответствующего этому договор можно найти у клиента элемент.

Сервисный код:

namespace StockService
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
    public class Service1 : IService1
    {
        public string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }

        public CompositeType GetDataUsingDataContract(CompositeType composite)
        {
            if (composite == null)
            {
                throw new ArgumentNullException("composite");
            }

            if (composite.BoolValue)
            {
                composite.StringValue += "Suffix";
            }

            return composite;
        }

        public string  GetCompositedata()
        {
           CompositeType ct = new CompositeType();
           return ct.StringValue;
        }
    }
}

web.config:

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

теперь с помощью svcutil я сгенерировал proxyclass (generateProxy.cs) и файл конфигурации (serviceapp.config) и добавил его в консольное приложение (клиент)

Клиент:

Service1Client sc = new Service1Client();
Console.WriteLine(sc.GetCompositedata());
Console.ReadKey();

конфиг:

<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="BasicHttpBinding_IService1" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01: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://localhost:2614/Service1.svc" binding="basicHttpBinding"
                bindingConfiguration="BasicHttpBinding_IService1" contract="IService1"
                name="BasicHttpBinding_IService1" />
        </client>
    </system.serviceModel>
</configuration>

Я не могу понять, почему я получаю это исключение.

Пожалуйста, помогите

Ответы [ 2 ]

6 голосов
/ 28 сентября 2010

Это конфигурация, которую вы отображаете для клиентской части app.config или web.config клиентского приложения, если это веб-сайт / веб-приложение ??

Вам необходимо включить эти части в конфигурацию вашего приложения - недостаточно иметь эти конфигурации в отдельном файле, созданном svcutil.exe - это должно быть частью конфигурации вашего приложения.

2 голосов
/ 28 сентября 2010

Сгенерированная svcutil конфигурация должна идти в ваш главный app.config, а не включаться как есть.

Вам необходимо добавить app.config в ваш проект, а затем объединить содержимое конфигурации svcutil с разделом конфигурации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...