Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Помогите найти ошибку (WCF) / 25 сообщений из 25, страница 1 из 1
06.12.2008, 11:10
    #35697609
Zeran
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку (WCF)
Всем доброго времени суток. Начинаю разбираться с 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
06.12.2008, 13:04
    #35697677
МСУ фбане
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку (WCF)
Где connection.Open?
...
Рейтинг: 0 / 0
06.12.2008, 13:24
    #35697692
Zeran
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку (WCF)
МСУ фбанеГде connection.Open?
ДатаАдаптер сам открывает соединение (Д. Сеппа - ADO.NET видели???)
А если щитаете себя самым умным - можно и подсказать как правильно сделать.
...
Рейтинг: 0 / 0
06.12.2008, 14:08
    #35697719
Gatman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку (WCF)
Попробуйте установить maxReceivedMessageSize больше
...
Рейтинг: 0 / 0
06.12.2008, 14:39
    #35697747
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку (WCF)
Чего-то не врублюсь, ты с win-формы пытаешься достучаться до сервиса, хостящегося на IIS?
...
Рейтинг: 0 / 0
06.12.2008, 14:51
    #35697754
Gatman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку (WCF)
buredЧего-то не врублюсь, ты с win-формы пытаешься достучаться до сервиса, хостящегося на IIS?и чё? у меня на все методы WCF написаны unit-tests в обычном консольном приложении. WCF пофигу откуда к нему обращаешься, главное правильный endpoint и binding
...
Рейтинг: 0 / 0
06.12.2008, 15:01
    #35697761
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку (WCF)
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
06.12.2008, 15:22
    #35697774
Gatman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку (WCF)
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
06.12.2008, 15:26
    #35697782
Gatman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку (WCF)
Zeran,
если это Ваша первая служба, то лучше бы сначала сделать простой метод, который возвратит Вам константную строку, чтобы быть уверенным, что дело в WCF, а не в Вашем методе, может у Вас запрос не отрабатывает
и ещё для отладки помогает установка в behavior сервиса такой вот настройки <serviceDebug includeExceptionDetailInFaults="true" />
...
Рейтинг: 0 / 0
06.12.2008, 15:28
    #35697784
bured
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку (WCF)
Gatman
и ещё для отладки помогает установка в behavior сервиса такой вот настройки <serviceDebug includeExceptionDetailInFaults="true" />
ошибка то на клиенте. Сервис и не находится пока.
...
Рейтинг: 0 / 0
06.12.2008, 15:40
    #35697791
Gatman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку (WCF)
bured,
да это был совет на будущее, как и про использование add service reference
buredошибка то на клиенте. Сервис и не находится покатак может там вообще порт не тот прописан? мож он сгенерил проксю на студийном хостинге, а потом на IIS захостил, и пытается к нему подключиться? в общем без автора не разобраться
...
Рейтинг: 0 / 0
06.12.2008, 15:56
    #35697804
Zeran
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку (WCF)
Сервис хостится на ВинФорм приложении.
...
Рейтинг: 0 / 0
06.12.2008, 16:25
    #35697825
Zeran
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку (WCF)
Вобщем как через студию добавлять сервис разобрался, роаботает, но хотелось бы просто поподробнее узнать как работать с прокси (не студией добавлять службу а через свцутил)...
...
Рейтинг: 0 / 0
06.12.2008, 16:48
    #35697838
Gatman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите найти ошибку (WCF)
Zeran,

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

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

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

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


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