Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Необязательные параметры методо Asp.Net сервиса / 13 сообщений из 13, страница 1 из 1
02.10.2013, 21:47
    #38414885
iamjin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необязательные параметры методо Asp.Net сервиса
Привет.

Кто-нибудь может сказать можно ли как-то пометить параметр метода Asp.Net сервиса, как необязательный. Чтобы вызов метода сервиса не "падал", если какой-то из его параметров не был передан.

Вот например сервис с методом, который принимает 2 параметра.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
using System.Web.Services;

namespace TestWebService
{
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class WebService : System.Web.Services.WebService
    {
        [WebMethod]
        public string Hello(string firstName, string lastName)
        {
            return "Hello " + firstName + " " + lastName;
        }
    }
}



Вот web.config для него

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<?xml version="1.0"?>
<configuration>
    <system.web>
      <compilation debug="true" targetFramework="4.5" />
      <httpRuntime targetFramework="4.5" />
      <webServices>
        <protocols>
          <add name="HttpGet"/>
          <add name="HttpPost"/>
        </protocols>
      </webServices>
    </system.web>
</configuration>



Если вызвать метод Hello и передать ему оба параметра, то все работает нормально. Вот например вызываю GET-ом метод

http://localhost/WebService/WebService.asmx/Hello?firstName=Ivan&lastName=Ivanov

получаю ответ

Код: xml
1.
2.
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">Hello Ivan Ivanov</string>



Но если один из параметров не передать, то получаю exception. Например

http://localhost/WebService/WebService.asmx/Hello?firstName=Ivan

ответ

System.InvalidOperationException: Missing parameter: lastName.
at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)
at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()

Можно это как-то красиво обойти, чтобы если параметр lastName в запросе не был передан, то в метод не "падал" и принимал его равным null ?

Спасибо!
...
Рейтинг: 0 / 0
02.10.2013, 22:09
    #38414893
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необязательные параметры методо Asp.Net сервиса
если память не подводит меня то нет
...
Рейтинг: 0 / 0
02.10.2013, 22:10
    #38414894
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необязательные параметры методо Asp.Net сервиса
для веб сервисов
...
Рейтинг: 0 / 0
02.10.2013, 22:52
    #38414909
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необязательные параметры методо Asp.Net сервиса
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
public class WebService : System.Web.Services.WebService
{
    [WebMethod(MessageName = "HelloDefault")]
    public string Hello(string firstName)
    {
        return Hello(firstName, string.Empty);
    }

    [WebMethod]
    public string Hello(string firstName, string lastName)
    {
        return "Hello " + firstName + " " + lastName;
    }
}



WebService.asmx/ HelloDefault?firstName=Ivan
WebService.asmx/ Hello?firstName=Ivan&lastName=Ivanov
...
Рейтинг: 0 / 0
03.10.2013, 14:12
    #38415525
iamjin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необязательные параметры методо Asp.Net сервиса
МСУ, спасибо за ответ.

Вариант с заменой имени метода не подходит. Клиент должен вызвать тот же метод Hello, но иметь возможность не передать какой-либо из параметров в запросе.
...
Рейтинг: 0 / 0
03.10.2013, 14:39
    #38415585
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необязательные параметры методо Asp.Net сервиса
iamjinКлиент должен вызвать тот же метод Hello, но иметь возможность не передать какой-либо из параметров в запросе.
Веб-сервис такие get запросы не поддерживает. Смотри в сторону WCF REST или WebAPI.
...
Рейтинг: 0 / 0
04.07.2014, 15:06
    #38688046
Orion70
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необязательные параметры методо Asp.Net сервиса
А как можно перехватить и обработать этот exception?
...
Рейтинг: 0 / 0
10.07.2014, 11:53
    #38692908
Orion70
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необязательные параметры методо Asp.Net сервиса
Народ, подскажите, можно ли перехватить exception, кода вызывается веб-сервис с недостающими параметрами?
Например, есть метод с двумя параметрами:

[WebMethod]
public string Hello(string firstName, string lastName)

Вызов:
http://server/app/ws.asmx/Hello?firstname=Ivanov

получаем: Веб-узел не может отобразить страницу
Как выдавать, что был вызов с некорректными параметрами?
...
Рейтинг: 0 / 0
15.07.2014, 15:45
    #38696972
Orion70
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необязательные параметры методо Asp.Net сервиса
Up
...
Рейтинг: 0 / 0
15.07.2014, 16:47
    #38697067
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необязательные параметры методо Asp.Net сервиса
Orion70,

... по-моему, проще на клиенте настроить валидацию, и если уж требуется обрабатывать неверный/отсутствие параметра не сервере, то при валидации на клиенте присваивать отсутствующему параметру что-то типа "none" или "undefined", а уж на сервере по этим ключевым словам и выбрасывать "иксепшн"
...
Рейтинг: 0 / 0
15.07.2014, 17:04
    #38697101
Orion70
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необязательные параметры методо Asp.Net сервиса
Дело в том, что клиент будет на стороне. А к серверной части, которую я и разрабатываю, стоит требование о возврате определенного кода ошибки, если были переданы не все параметры.
...
Рейтинг: 0 / 0
15.07.2014, 17:55
    #38697139
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необязательные параметры методо Asp.Net сервиса
...
Рейтинг: 0 / 0
17.07.2014, 13:56
    #38699056
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Необязательные параметры методо Asp.Net сервиса
Orion70Дело в том, что клиент будет на стороне. А к серверной части, которую я и разрабатываю, стоит требование о возврате определенного кода ошибки, если были переданы не все параметры.
ASP.NET WebService - используют инфраструктуру ASP.NET для обработки запросов.
Прежде, чем запрос будет передан на обработку соответствующему хендлеру, он будет передан всем зарегистрированным модулям. Реализуйте свой наследник от IHttpModule, который будет производить валидацию параметров.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Необязательные параметры методо Asp.Net сервиса / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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