Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Убрать Soap-header


Автор: WERITAS 11.2.2011, 13:36
Добрый день! Подскажите как мне поменять SOAP-сообщение, отправляемое моим агентом? Конкретно надо убрать заголовок <soap:header></soap:header>

Сейчас у меня отправляется вот такое вот сообщение:
Код

01.POST /onvif/services HTTP/1.1..
02.Content-Type: application/soap+xml; charset=utf-8..
03.Host: 77.73.27.108..
04.Content-Length: 900..
05.Accept-Encoding: gzip, deflate..
06.Connection: Close..
07...
08.<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
09.    <s:Header>
10.        <a:Action s:mustUnderstand="1">http://www.onvif.org/ver10/device/wsdl/GetCapabilities<;/a:Action>
11.        <a:MessageID>urn:uuid:d76fb8f6-7b4c-414f-a325-69a89ea4de28</a:MessageID>
12.        <a:ReplyTo>
13.            <a:Address>http://www.w3.org/2005/08/addressing/anonymous<;/a:Address>
14.        </a:ReplyTo>
15.        <VsDebuggerCausalityData xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPo4knbG/2xfZOki420L0py14AAAAAg3znTqrIs0Woye9YEg4/TbS21OlYfYNPjFBVlKJ4D7MACQAA</VsDebuggerCausalityData>
16.            <a:To s:mustUnderstand="1">http://77.73.27.108/onvif/services<;/a:To>
17.    </s:Header>
18.    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
19.        <GetCapabilities xmlns="http://www.onvif.org/ver10/device/wsdl">
20.            <Category>Media</Category>
21.        </GetCapabilities>
22.    </s:Body>
23.</s:Envelope>


А надо, чтобы отправлялось вот какое:
Код

01.POST /onvif/services HTTP/1.1..
02.Content-Type: application/soap+xml; charset=utf-8..
03.Host: 77.73.27.108..
04.Content-Length: 900..
05.Accept-Encoding: gzip, deflate..
06.Connection: Close..
07...
08.<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing">
09.    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
10.        <GetCapabilities xmlns="http://www.onvif.org/ver10/device/wsdl">
11.            <Category>Media</Category>
12.        </GetCapabilities>
13.    </s:Body>
14.</s:Envelope>


Вот мой код агента:
Код

01.static void Main(string[] args)
02.        {
03.            ServicePointManager.Expect100Continue = false;
04. 
05.            HttpTransportBindingElement httpTransportBindingElement = new HttpTransportBindingElement();
06.            httpTransportBindingElement.AuthenticationScheme = AuthenticationSchemes.Basic;
07.            httpTransportBindingElement.KeepAliveEnabled = false;
08. 
09.            SecurityBindingElement securityBindingElement = new SecurityBindingElement();
10.         
11.            CustomBinding binding = new CustomBinding();
12.            binding.Elements.Add(httpTransportBindingElement);
13.            
14.            EndpointAddress DeviceEndPointAddress = new EndpointAddress("http://77.73.27.108:80/onvif/device_service");
15.             
16.            string Username = "guest";
17.            string Password = "guest";
18. 
19.            DeviceClient deviceClient = new DeviceClient(binding, DeviceEndPointAddress);
20.            deviceClient.ClientCredentials.UserName.UserName = Username;
21.deviceClient.ClientCredentials.UserName.Password = Password;
22. 
23.            try
24.            {
25.                Console.WriteLine("Starting...");
26. 
27.                Capabilities capabilities = deviceClient.GetCapabilities(new CapabilityCategory[] { CapabilityCategory.Media });  // Вызывается удаленный метод


Автор: jonie 11.2.2011, 15:27
сдается мне что вам надо будет писать soap header inspector
Информация тута:
http://social.technet.microsoft.com/wiki/contents/articles/how-to-inspect-wcf-message-headers-using-iclientmessageinspector.aspx
http://weblogs.asp.net/paolopia/archive/2007/08/23/writing-a-wcf-message-inspector.aspx

если получится выложите пжлст.

хотя почитайте для начала http://stackoverflow.com/questions/986455/wcf-wsdl-soap-header-on-all-operations

Автор: WERITAS 11.2.2011, 18:59
Проблему решил, запустив из командной строки следующую тулзу со специальным ключиком:
Код

C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE>vsdiag_regwcf.exe -u

Автор: jonie 12.2.2011, 00:07
я поверю что эта строка ушла:
Код

15.        <VsDebuggerCausalityData xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPo4knbG/2xfZOki420L0py14AAAAAg3znTqrIs0Woye9YEg4/TbS21OlYfYNPjFBVlKJ4D7MACQAA</VsDebuggerCausalityData>
16.            <a:To s:mustUnderstand="1">http://77.73.27.108/onvif/services<;/a:To>
но чтобы вся ?! Эта строка для отладки студии нужна.
хотя, конечно, может быть, может быть...

и да, вместо того чтобы вырубать wcf debugger лучше просто в релизе собирать

Автор: jmas 20.2.2012, 17:46
Здравствуйте, извините, что поднимаю такую древнюю ветку, если у вас сохранился исходник не могли бы вы сбросить его в личку?

Заранее спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)