powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Помогите найти ошибку (WCF)
25 сообщений из 25, страница 1 из 1
Помогите найти ошибку (WCF)
    #35697609
Zeran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго времени суток. Начинаю разбираться с WCF, написал простенькую службу которая содержит 1 ф-цию для передачи таблички. СвцУтилом сгенерировал проксю, добавил ее в клиент, но он почему-то не подключаеться к службе.
Код службы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
namespace WcfServiceLibrary
{
    [ServiceContract]
    public interface IDBAdapter
    {
        [OperationContract]
        DataTable GetTable();
    }    
}
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
namespace WcfServiceLibrary
{
    public class DBAdapter : IDBAdapter
    {
        #region IDBAdapter Members
        private string connStr = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=TestBase;Data Source=OXYGEN\\SQLEXPRESS";
        private SqlConnection connection;

        public DataTable GetTable()
        {
            DataTable result = new DataTable();
            connection = new SqlConnection(connStr);
            SqlDataAdapter daTest = new SqlDataAdapter("SELECT * FROM [testtable]", connection);
            daTest.Fill(result);
            return result;
        }

        #endregion        
    }
}
Конфиг файл:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="MyServiceTypeBehaviors" name="WcfServiceLibrary.DBAdapter">
        <endpoint binding="wsHttpBinding" contract="WcfServiceLibrary.IDBAdapter" />
        <endpoint address="ep1" binding="wsHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8088/DBAdapter" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyServiceTypeBehaviors" >
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>

</configuration>
Прокси класс, сгенеренный СвцУтилом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
namespace DBAdapterClient
{
    //------------------------------------------------------------------------------
    // <auto-generated>
    //     This code was generated by a tool.
    //     Runtime Version:2.0.50727.3053
    //
    //     Changes to this file may cause incorrect behavior and will be lost if
    //     the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------    



    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
    [System.ServiceModel.ServiceContractAttribute(ConfigurationName = "IDBAdapter")]
    public interface IDBAdapter
    {

        // CODEGEN: Parameter 'GetTableResult' requires additional schema information that cannot be captured using the parameter mode. The specific attribute is 'System.Xml.Serialization.XmlElementAttribute'.
        [System.ServiceModel.OperationContractAttribute(Action = "http://tempuri.org/IDBAdapter/GetTable", ReplyAction = "http://tempuri.org/IDBAdapter/GetTableResponse")]
        [System.ServiceModel.XmlSerializerFormatAttribute()]
        GetTableResponse GetTable(GetTableRequest request);
    }

    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
    [System.ServiceModel.MessageContractAttribute(WrapperName = "GetTable", WrapperNamespace = "http://tempuri.org/", IsWrapped = true)]
    public partial class GetTableRequest
    {

        public GetTableRequest()
        {
        }
    }

    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
    [System.ServiceModel.MessageContractAttribute(WrapperName = "GetTableResponse", WrapperNamespace = "http://tempuri.org/", IsWrapped = true)]
    public partial class GetTableResponse
    {

        [System.ServiceModel.MessageBodyMemberAttribute(Namespace = "http://tempuri.org/", Order = 0)]
        [System.Xml.Serialization.XmlElementAttribute(IsNullable = true)]
        public System.Data.DataTable GetTableResult;

        public GetTableResponse()
        {
        }

        public GetTableResponse(System.Data.DataTable GetTableResult)
        {
            this.GetTableResult = GetTableResult;
        }
    }

    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
    public interface IDBAdapterChannel : IDBAdapter, System.ServiceModel.IClientChannel
    {
    }

    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
    public partial class DBAdapterClient : System.ServiceModel.ClientBase<IDBAdapter>, IDBAdapter
    {

        public DBAdapterClient()
        {
        }

        public DBAdapterClient(string endpointConfigurationName) :
            base(endpointConfigurationName)
        {
        }

        public DBAdapterClient(string endpointConfigurationName, string remoteAddress) :
            base(endpointConfigurationName, remoteAddress)
        {
        }

        public DBAdapterClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
            base(endpointConfigurationName, remoteAddress)
        {
        }

        public DBAdapterClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
            base(binding, remoteAddress)
        {
        }

        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
        GetTableResponse IDBAdapter.GetTable(GetTableRequest request)
        {
            return base.Channel.GetTable(request);
        }

        public System.Data.DataTable GetTable()
        {
            GetTableRequest inValue = new GetTableRequest();
            GetTableResponse retVal = ((IDBAdapter)(this)).GetTable(inValue);
            return retVal.GetTableResult;
        }
    }

}
И конфиг:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <bindings>
      <wsHttpBinding>
        <binding name="wsHttpBinding_IDBAdapter" closeTimeout="00:01:00"
            openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
            bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
            maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
            messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
            allowCookies="false">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
              maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00"
              enabled="false" />
          <security mode="Message">
            <transport clientCredentialType="Windows" proxyCredentialType="None"
                realm="" />
            <message clientCredentialType="Windows" negotiateServiceCredential="true"
                algorithmSuite="Default" establishSecurityContext="true" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:8088/DBAdapter" binding="wsHttpBinding"
          bindingConfiguration="wsHttpBinding_IDBAdapter" contract="IDBAdapter"
          name="wsHttpBinding_IDBAdapter">
        <identity>
          <userPrincipalName value="OXYGEN\Zeran" />
        </identity>
      </endpoint>
    </client>
  </system.serviceModel>
</configuration>
И собственно сам клиент:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
namespace DBAdapterClient
{
    public partial class fMain : Form
    {
        //
        private DBAdapterClient dba = null;
        //
        public fMain()
        {
            InitializeComponent();
        }
        private void btnConnect_Click(object sender, EventArgs e)
        {
            dba = new DBAdapterClient();          
            gridTest.DataSource = dba.GetTable();
        }
    }
}
При нажатии на кнопку btnConnect студия выдает вот что:
Код: plaintext
1.
2.
3.
4.
An error occurred while receiving the HTTP response to http://localhost:8088/DBAdapter. 
This could be due to the service endpoint binding not using the HTTP protocol. 
This could also be due to an HTTP request context being aborted by the server 
(possibly due to the service shutting down). See server logs for more details.
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697677
МСУ фбане
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где connection.Open?
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697692
Zeran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ фбанеГде connection.Open?
ДатаАдаптер сам открывает соединение (Д. Сеппа - ADO.NET видели???)
А если щитаете себя самым умным - можно и подсказать как правильно сделать.
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697719
Gatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте установить maxReceivedMessageSize больше
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697747
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего-то не врублюсь, ты с win-формы пытаешься достучаться до сервиса, хостящегося на IIS?
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697754
Gatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredЧего-то не врублюсь, ты с win-формы пытаешься достучаться до сервиса, хостящегося на IIS?и чё? у меня на все методы WCF написаны unit-tests в обычном консольном приложении. WCF пофигу откуда к нему обращаешься, главное правильный endpoint и binding
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697761
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gatman, я не сказал, что так нельзя. Просто пытаюсь прояснить ситуацию.
Полагаю вот здесь засада
Код: plaintext
1.
2.
3.
4.
5.
6.
 <security mode="Message">
            <transport clientCredentialType="Windows" proxyCredentialType="None"
                realm="" />
            <message clientCredentialType="Windows" negotiateServiceCredential="true"
                algorithmSuite="Default" establishSecurityContext="true" />
          </security>
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697774
Gatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buredПолагаю вот здесь засада
Код: plaintext
1.
2.
3.
4.
5.
6.
 <security mode="Message">
            <transport clientCredentialType="Windows" proxyCredentialType="None"
                realm="" />
            <message clientCredentialType="Windows" negotiateServiceCredential="true"
                algorithmSuite="Default" establishSecurityContext="true" />
          </security>
а что там может быть не так? у меня такие же настройки на клиенте, всё работает.
svcutil их сама проставляет
2Zeran, если у Вас студия 2008, то удобнее юзать add service reference. это то же самое, но с графическим интерфейсом
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697782
Gatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zeran,
если это Ваша первая служба, то лучше бы сначала сделать простой метод, который возвратит Вам константную строку, чтобы быть уверенным, что дело в WCF, а не в Вашем методе, может у Вас запрос не отрабатывает
и ещё для отладки помогает установка в behavior сервиса такой вот настройки <serviceDebug includeExceptionDetailInFaults="true" />
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697784
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gatman
и ещё для отладки помогает установка в behavior сервиса такой вот настройки <serviceDebug includeExceptionDetailInFaults="true" />
ошибка то на клиенте. Сервис и не находится пока.
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697791
Gatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bured,
да это был совет на будущее, как и про использование add service reference
buredошибка то на клиенте. Сервис и не находится покатак может там вообще порт не тот прописан? мож он сгенерил проксю на студийном хостинге, а потом на IIS захостил, и пытается к нему подключиться? в общем без автора не разобраться
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697804
Zeran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сервис хостится на ВинФорм приложении.
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697825
Zeran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вобщем как через студию добавлять сервис разобрался, роаботает, но хотелось бы просто поподробнее узнать как работать с прокси (не студией добавлять службу а через свцутил)...
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697838
Gatman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zeran,

чтоб разобраться, читайте доки - как-то не так параметры передали. тока вот смысл разбираться особо, когда через студию как раз и вызывается svcutil, просто параметры задаются в нормальном интерфейсе.
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697839
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забейте вы на эти утилиты, они вас ничему не научат.
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697848
WCF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WCF
Гость
Не очень умно передавать таблицу через Message. Заюзайте DataContract.
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697933
Zeran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WCFНе очень умно передавать таблицу через Message. Заюзайте DataContract.
А можете подсказать какую книжечку лучше купить по данной теме? Ато их несколько есть, а какая лучше - не известно. :(
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697957
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На русском вышло 3 книги.

Дж. Смит. Основы WCF - полная туфта. Рассказывается про что угодно, только не про WCF.

Резник, Крейн, Боуэн Основы WCF - неплохая книга, но кратенько всё.

Джувел Лёве. Создание служб WCF - классная книга. Только автор пишет свои примочки, не запутайтесь: где его расширения, а где стандартный WCF.
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697967
bured
Буренька, ссылочку бы на русский Джувел Лёве... ;)
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35697968
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мечтающий о добре, бросьте , пятихатка не подорвёт ваше финансовое положение. :)
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35698014
Эх, Андрюша, Андрюша... Припомнится Вам это... )
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35698152
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мечтающий о добреЭх, Андрюша, Андрюша... Припомнится Вам это... )
Ну нет его в эл. виде, я сам покупал. Поедите разок шпротов вместо раков.
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35698203
Zeran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда, я тоже не нашел в електронке, придется завтро ехать на "Петровку" и там искать... Кстате а че еще по Сильверлайту 2 можете посоветовать из книг?
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35698237
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На русском пока не было ничего.
...
Рейтинг: 0 / 0
Помогите найти ошибку (WCF)
    #35698238
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На англ. полно, но я не очень интересуюсь Сервелатом.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Помогите найти ошибку (WCF)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]