Как проверить wcf в реальной среде - PullRequest
0 голосов
/ 07 марта 2012

Я сделал сервис с помощью wcf. Я протестировал его, создав проект для клиента типа asp.net, и он отлично работает. Я разместил сервис и клиента на IIS, который я хотел запустить, не открывая Visual Studio. когда я закрывал визуальную студию и помещал свой URL проекта клиента, это выдает мне эту ошибку

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

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

Сведения об исключении: System.InvalidOperationException: не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт ServiceReference1.IService1 в конфигурации клиента ServiceModel раздел. Это может быть потому, что не найден файл конфигурации для ваше приложение, или потому что нет элемента конечной точки, соответствующего этому Контракт может быть найден в клиентском элементе.

Ошибка источника:

Строка 27: Строка 28: System.IO.FileInfo fileinfo = new System.IO.FileInfo (FileUpload1.PostedFile.FileName); Строка 29:
ServiceReference1.IService1 clientupload = new ServiceReference1.Service1Client (); Строка 30:
ServiceReference1.RemoteFileInfo uploadRequestInfo = new ServiceReference1.RemoteFileInfo (); Строка 31: Ссылка = FileUpload1.PostedFile.FileName;

Исходный файл: C: \ Users \ KHALED \ Documents \ visual studio 2010 \ Projects \ WcfServicefiles \ WebApplication2 \ Default.aspx.cs Строка: 29
вот web.config службы

  <?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0"/>
    <httpRuntime maxRequestLength="2097151"
    useFullyQualifiedRedirectUrl="true"
  executionTimeout="14400"/>
  </system.web>
  <system.serviceModel>
    <client />
    <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="true"/>
          <dataContractSerializer maxItemsInObjectGraph="6553600"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <bindings>
      <basicHttpBinding>
        <binding name="Service1" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"
          transferMode="Streamed">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          <security mode="None">
            <transport clientCredentialType="Ntlm" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service name="WcfServicefinal.Service1"   >
        <endpoint address="" binding="basicHttpBinding"
                  bindingConfiguration="Service1"
                  contract="WcfServicefinal.IService1" >

        </endpoint>
      </service>

    </services>

        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>

Вот это web.config клиента

<?xml version="1.0"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />

    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="2880" />
    </authentication>

    <membership>
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
             enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
             applicationName="/" />
      </providers>
    </membership>

    <profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
      </providers>
    </profile>

    <roleManager enabled="false">
      <providers>
        <clear/>
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>

  </system.web>

  <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IService1" closeTimeout="00:01:00"
          openTimeout="04:01:00" receiveTimeout="04:10:00" sendTimeout="04:01:00"
          allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
          maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
          messageEncoding="Text" textEncoding="utf-8" transferMode="Streamed"
          useDefaultWebProxy="true">
          <readerQuotas maxDepth="128" maxStringContentLength="2147483647" maxArrayLength="2147483647"
            maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost/WcfServicefinal/Service1.svc"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1"
        contract="ServiceReference1.IService1" name="BasicHttpBinding_IService1" />
    </client>
  </system.serviceModel>
</configuration>

Ответы [ 2 ]

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

WCFTestClient , поставляемый с VS, предназначен для тестирования WCF.

0 голосов
/ 07 марта 2012

Хорошей идеей может быть попытка сначала разместить свой сервис в консольном приложении.Шон прав, было бы полезно увидеть вашу конфигурацию.

При запуске вашего сервиса в visual studio сервис автоматически размещается для вас.При тестировании за пределами Visual Studio: запустите хост службы, откройте браузер и введите BASE-адрес вашего хоста.Вы должны увидеть страницу со ссылкой на определение wsdl, если доступны данные meata.

Базовый адрес может выглядеть как http://192.168.89.73:8080/base с IP-адресом вашей машины, номером порта ....

...