Форум программистов, компьютерный форум, киберфорум
C#: Веб-сервисы и WCF
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
3 / 7 / 5
Регистрация: 18.10.2014
Сообщений: 177
1

Настройка WCF

25.04.2019, 12:02. Показов 1319. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет, подскажите что нужно в конфиг прописать плз. Пытаюсь запустить выдает исключение:System.InvalidOperationException: Чтобы запрос в операции EchoWithPut был потоком, операция должна иметь один параметр с типом Stream.
Вот контракт
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 [OperationContract]
        [WebGet]
        string EchoWithGet(string s);
 
        [OperationContract]
        [WebInvoke(Method = "POST",
            UriTemplate = "/auth",
            RequestFormat = WebMessageFormat.Json,
            ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.WrappedRequest)]
        string EchoWithPost(Stream stream);//string login, string password);
 
        [OperationContract]
        [WebInvoke(Method = "PUT",
            UriTemplate = "/orders/{ID}"
            , RequestFormat = WebMessageFormat.Json,
            ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.WrappedRequest
            )]
        string EchoWithPut(string ID, Stream stream);
вот метод
C#
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
 public string EchoWithPut(string ID, Stream stream)
        {
            string json = "";
            string application = "", application = "", IP = "", session = "";
            string result_message = "";
            int result = 0;
            StreamReader reader = new StreamReader(stream);
            while (!reader.EndOfStream)
            {
                json += reader.ReadLine();
 
                OperationContext context = OperationContext.Current;
                MessageProperties properties = context.IncomingMessageProperties;
                RemoteEndpointMessageProperty property = properties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
 
                IncomingWebRequestContext requestContext = WebOperationContext.Current.IncomingRequest;
                WebHeaderCollection headers = requestContext.Headers;
 
                application_name = headers["Client"].ToString();
                application_guid = headers["Secret"].ToString();
                IP = property.Address + property.Port;
                session_guin = headers["Authorization"].ToString();
            }
            reader.Close();
 
            Dictionary<string, string> set = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
 
            DataTable table = new DataTable();
            table.Columns.Add(new DataColumn("Name", Type.GetType("System.String")));
            table.Columns.Add(new DataColumn("Value", Type.GetType("System.String")));
 
            foreach (var k in set)
            {
                DataRow row = table.NewRow();
                row["Name"] = k.Key;
                row["Value"] = k.Value;
                table.Rows.Add(row);
            }
            string aa = OperationContext.Current.RequestContext.RequestMessage.ToString();
 
            SqlCommand cmd = new SqlCommand("[dbo].[OP_ApplicationUpdate]", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@application", application);
            cmd.Parameters.AddWithValue("@application", application);
            cmd.Parameters.AddWithValue("@session", session);
            cmd.Parameters.AddWithValue("@IP", IP);
 
            cmd.Parameters.AddWithValue("@reques_id", ID);
            cmd.Parameters.AddWithValue("@t_answer", table);
 
            SqlParameter resultOut = new SqlParameter
            {
                ParameterName = "@RESULT",
                Value = result,
                SqlDbType = SqlDbType.Int,
                Direction = ParameterDirection.Output
            };
            SqlParameter result_messageOut = new SqlParameter
            {
                ParameterName = "@RESULT_MESSAGE",
                Value = result_message,
                SqlDbType = SqlDbType.VarChar,
                Size=1000,
                Direction = ParameterDirection.Output
            };
            cmd.Parameters.Add(resultOut);
            cmd.Parameters.Add(result_messageOut);
            try
            {
                conn.Open();
                cmd.ExecuteNonQuery();
                conn.Close();
                return cmd.Parameters["@RESULT"].Value.ToString();
            }
            catch (Exception ex)
            {
                return cmd.Parameters["@RESULT_MESSAGE"].Value.ToString();
 
            }
        }
вот конфиг
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<configuration>
 
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <directoryBrowse enabled="true"/>
  </system.webServer>
 
</configuration>
Добавлено через 1 час 18 минут
Ошибка выходит когда я пытаюсь зайти на http://localhost:1885/Service1.svc
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2019, 12:02
Ответы с готовыми решениями:

Базовая настройка WCF
Здравствуйте, проблема в настройке службы, т.к. при компиляции ругается, что узел службы не может...

WCF или не WCF: требуется ли для взаимодействия с БД писать сервис?
Всем привет! Дела обстоят так: пишу мессенджер. Ну точнее еще не пишу, а продумываю саму идею, как...

WCF и БД, Как работает WCF?
Доброго всем время суток. Недавно приходилось кодить на MVC Решил тут разобраться что такое WCF...

В чём отличие приложения службы WCF от библиотеки службы WCF
Вот читаю книгу по WCF. Создал проект, и думаю, а в чём же основное отличие? Библиотека как-то...

2
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
25.04.2019, 15:41 2
.. так передавайте ID прямо в JSON-e с клиента, зачем его из урл-а вытаскивать ...
0
3 / 7 / 5
Регистрация: 18.10.2014
Сообщений: 177
25.04.2019, 16:05  [ТС] 3
Изменить url не могу так нужно, я решил отойти от stream и сделать по другому
вот так теперь выглядит метод
C#
1
2
3
4
5
6
7
        [OperationContract]
        [WebInvoke(Method = "PUT",
            UriTemplate = "/order/{ID}",
            RequestFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Wrapped
            )]
        string EchoWithPut(string ID, string status, string ct_answer, string organizationinfo, string timestamp);
но появилась другая ошибка:Cannot process the message because the content type 'application/json' was not the expected type 'text/xml; charset=utf-8 wcf. Кода пытаюсь отправить json.
вот config
XML
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.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
 
    <services>
      <service name="WcfService1.Service1"  >
 
        <endpoint contract="WcfService1.IService1" binding="webHttpBinding" address=""/>
      </service>
    </services>
 
    <behaviors>
 
      <serviceBehaviors>
        
        <behavior >
          
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true">
    </serviceHostingEnvironment>
 
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <directoryBrowse enabled="true"/>
  </system.webServer>
 
</configuration>
можете скинуть статейку где для тупых обедняется как настраивать wcf

Добавлено через 3 минуты
До этого я написал консольное приложение с wcf службой и там все работает. Решил написать эту же службу но отдельно встал в это говно.
0
25.04.2019, 16:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2019, 16:05
Помогаю со студенческими работами здесь

wcf ошибка
не запускаются wcf проэкты. помогите пожалуйста с ошибкой на скриншоте. или дайте пример рабочего....

Возврат из WCF
В сильверлайт приложении создал wcf webservice с таким кодом namespace Qlider_training.Web { ...

WCF и сеть
Здравствуйте. Имеется сетка. Необходимо, чтобы компьютеры в сети могли обмениваться определенными...

Литература по WCF
Всем привет. Какую литературу посоветуйте по WCF ? Хочу начать изучать клиент-сервер, работать с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru