2013-04-16 2 views
0

Я новичок в WCF, но не новичок в C# и .Net. и я использую Visual Studio 2008 и .Net 3.5.Как разрешить все операции и пространства имен

Я пытаюсь создать веб-службу, которая может получать любой входящий XML-запрос и любые пространства имен. Он будет вести себя как прозрачный приемник и просто принимать XML-запрос входящих запросов.

Как только я получу запрос, я собираюсь передать его в какой-то пользовательский .Net C# Project, чтобы вызвать MQPUT для IBM MQ Series.

Сейчас у меня есть приложение веб-службы WCF, получающее общую входящую операцию под названием RunTest(). Я использую WSDL в SoapUI, строю образец запроса и точку останова, и он работает. Но, когда я пытаюсь передать XML-запрос нашей компании, он не приземляется на точку останова.

Вот ServiceContract и Operation:

[ServiceContract(Name="IService1",Namespace="cfg-env=http://www.co.com/schemas/cfg-  env/")] 
//[ServiceContract] 
public interface IService1 
{ 


[OperationContract] 
void RunTest(); 

[OperationContract] 
void CFX(); 

Вот Метод работы:

public void RunTest() 
{ <<<it does break here using the request from the WSDL 
string serviceName; 
string queueManager; 
string queue; 
string requestMessage; 

//Capture the Service Name 
serviceName = ""; 

//Save the QueueManager 
queueManager = ""; 

//Save the Request Queue 
queue = ""; 

//Save the Message 
requestMessage = ""; 

//Call MQ Put 
Engine eng = new Engine(); 
try 
{ 
eng.Put(serviceName, queue, requestMessage, queueManager);    
} 

Главное, что мне нужно сделать, это получить входящий XML, interogate его для несколько фрагментов информации и вызов этого метода для выполнения функции MQPUT на MQ.

Входящее пространство имен будет выглядеть как указано выше, но я хочу, чтобы я мог получать и взаимодействовать с любым XPATH, который может быть присвоен пространству имен. Если мне нужно, я могу работать с префиксом пространства имен cfg-env исключительно, поскольку наши службы используют это как стандарт.

Каковы мои ключевые препятствия при выполнении этого в VS 2008 WCF? Если у вас есть какие-либо ссылки, пройдите их, если сможете.

+0

Почему вы _want_ сделать это с WCFM, если это HTTP и XML, что происходит вокруг? Простой модуль IIS или так будет достаточным, что упростит доступ к уровню HTTP и необработанные сообщения. :) – CodeCaster

+1

Итак, когда вы пытаетесь передать свой запрос компании XML, он не приземляется на точку останова ?? в RunTest нет параметров, которые принимают ваши данные xml. – siri

ответ

2

Я считаю, что вы указываете свойство name в атрибуте OperationContract как «*», чтобы принимать все запросы. Чтобы сделать сам параметр параметром агностик, он должен быть типа System.ServiceModel.Channels.Message.

+0

Можете ли вы дать мне snipet о том, как установить тип атрибута Name? Я бросаю? – user2288132

+0

Извините, это не свойство Name атрибута OperationContract. Это действие. Итак [OperationContract (Action = "*")]. См. Http://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontractattribute.action.aspx. – Rich

1

Что вы строите, это «маршрутизатор WCF».

Входящий в состав последней версии .NET конфигурируемый Routing Service.

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

Building a WCF Router, Part 1

Building a WCF Router, Part 2

Смежные вопросы