ranio Ответов: 0

Как передать базовый адрес с входными параметрами запроса для службы WCF с помощью веб-сокета в ASP.NET с помощью C#?


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

Я создал базовый адрес Url динамически.
При удалении входных параметров запроса это нормально. Но как я могу передать эти параметры запроса в качестве базового адреса, на основе которого можно сгенерировать адрес конечной точки

Получение исключения, как показано ниже:
A base address cannot contain a Uri query string.
Parameter name: item

Below is the  base address I need to send as request 
<pre>https://10.15.15.15/CBWSO/wso?entityDetails={   
                  
                    

                     {                                     
                     "requestData": "2834367eec9be180739b628ae73e89ceac49ad575a3d00876105fe0321b3fc4a" ,
                     "requestkData": "2834367eec9be180739b628ae73e89ceac49ad575a3d00876105fe0321b3fc4a" 
                    }
                    
                  
                & entityId=123}


Ожидаемый ответ:
wss://10.15.15.15/CBWSO/wso?entityDetails={   
                  
                    

                     {                                     
                     "requestData": "2834367eec9be180739b628ae73e89ceac49ad575a3d00876105fe0321b3fc4a" ,
                     "requestkData": "2834367eec9be180739b628ae73e89ceac49ad575a3d00876105fe0321b3fc4a" 
                    }
                    
                  
                & entityId=123}


Что я уже пробовал:

Основной код выглядит следующим образом:
string strHandShakeRequest = string.Empty;
    try
    {
        Logger.Log("Fetching of Encryption With AES for handshake Starts", LogFilename.WebPageLog, 3, MethodInfo.GetCurrentMethod().Name);

        string HandShakeParentUrl = hsk.HandShakeReqParentUrl;

        string RequestKeyData = hsk.requestKData;

        string RequestData = hsk.requestKData;

        string EntityID = hsk.EntityId;

        string json = @"



             {
             ""requestData"": """ + RequestKeyData + @""" ,
             ""requestkData"": """ + RequestData + @"""
            }


        ";




        StringBuilder strRequest = new StringBuilder();
        strRequest
       .Append(HandShakeReqParentUrl)
       .Append("=")
       .Append("{ ")
       .Append(json)
        .Append("& ")
       .Append("entityId=")
       .Append("")
       .Append(EntityId)
       . Append("")
       .Append("}");

        strHandShakeRequest = strRequest.ToString();



        Logger.Log("Fetching of Encryption With AES for handshake Ends", LogFilename.WebPageLog, 3, MethodInfo.GetCurrentMethod().Name);
    }
    catch (Exception ex)
    {
        throw ex;
    }
    return strHandShakeRequest;


Uri baseAddress = new Uri(strHandShakeRequest);
                       ServiceHost host = new ServiceHost(typeof(WebSocket_Stub.Service1), baseAddress);

F-ES Sitecore

Вы не можете поместить строку запроса на базовый адрес, как говорится в сообщении об ошибке. Базовый адрес адрес для использования в качестве отправной точки если вы хотите использовать относительный адрес для конечных точек службы, а не абсолютный, это также ссылка на службу, к которой подключаются запросы при выполнении запросов. Посмотрите на ссылку ниже для получения дополнительных объяснений и примеров

https://docs.microsoft.com/en-us/dotnet/framework/wcf/specifying-an-endpoint-address

Как вы "решите" этот вопрос, зависит от того, что это за данные param, кому они нужны и т. д. Возможно, вы переместите его в службу, возможно, вы создадите метод инициализации в своей службе, где вы передадите эти данные, возможно, вы просто переместите код, который получает все эти ключи в саму службу, чтобы их не нужно было передавать. Мы не знаем, какова ваша конечная цель, поэтому трудно дать конкретный совет. Но, пожалуйста, не просто повторяйте свой вопрос или не создавайте еще одну тему на эту тему. То, что вы пытаетесь сделать, невозможно, вам нужно альтернативное решение.

ranio

Что я имел в виду, можно ли передать url-адрес веб-сокета со строкой запроса. Я делаю это в рамках 4.6

Попробовал нижеприведенный способ:

используя (ВАР WS = новый с WebSocket("WS включает в себя//dragonsnest.далеко/Лапута"))
{
с WS.подключить();
}
такая кодовая строка тоже не поддерживается. у меня есть служба wcf, и я хочу установить связь через веб-сокет в c#.
любое решение есть, чтобы сделать то же самое. без строки запроса никаких проблем нет.

ranio

Мне нужно сделать запрос на рукопожатие с помощью веб-сокета в asp.net-да. Но как я мог послать письмо?
такой же:
Как я могу сделать запрос рукопожатия на следующий URI:
(“wss://10.1.1.1/CBWSO/wso ?test=1&ade=2

Member 13296047

привет ранио, я также пытаюсь создать рукопожатие для ws, однако получаю следующую ошибку "попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время или установленное соединение не удалось, потому что подключенный хост не ответил 10.1.1.1:443"

Я был бы признателен Вам за помощь, если бы вы могли прояснить мои сомнения относительно связи рукопожатия websocket.

0 Ответов