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

Кто-нибудь может сказать можно ли как-то пометить параметр метода 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
Необязательные параметры методо Asp.Net сервиса
    #38414893
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если память не подводит меня то нет
...
Рейтинг: 0 / 0
Необязательные параметры методо Asp.Net сервиса
    #38414894
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для веб сервисов
...
Рейтинг: 0 / 0
Необязательные параметры методо Asp.Net сервиса
    #38414909
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Необязательные параметры методо Asp.Net сервиса
    #38415525
iamjin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ, спасибо за ответ.

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

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

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

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

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


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