Я работаю с VS 2017, .Net 4 и проектом WcfService. У меня есть такой сервис:
Интерфейс:
namespace MyServiceNamespace
{
[ServiceContract]
public interface IMyService
{
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
String GetSomething(int Produkt, DateTime MyDate, char SomeFlag);
}
public class myService : IMyService
{
public String GetSomething(int Produkt, DateTime MyDate, char SomeFlag)
{
if(Produkt==0){Produkt=12345;}
if(MyDate==DateTime.MinValue){MyDate=DateTime.Today;}
if(SomeFlag=='\0'){SomeFlag='F';}
return dosomething();
}
}
}
я могу назвать это с
http://myserver/myservice.svc/GetSomething?Produkt=1&MyDate=2018-01-01&SomeFlag=A
но также
http://myserver/myService.svc/GetSomething?Produkt=1&MyDate=2018-01-01
или даже
http://myserver/myservice.svc/GetSomething
отсутствующие параметры заполняются пустым значением или значением по умолчанию для типа.
Я не знаю, есть ли лучший способ установить собственное значение по умолчанию, потому что
public String GetSomething(int Produkt, DateTime MyDate, char SomeFlag='F')
не работает, все еще SomeFlag == '\ 0'
Что я не выяснил, так это как я могу определить, есть ли значение, потому что этот параметр отсутствовал или был вызван с т. Е. 1.1.0001
Обновление: разметка MyService.svc:
<%@ ServiceHost Language="C#" Debug="true" Service="MyServiceNameSpace.MyService" CodeBehind="MyService.svc.cs" Factory=System.ServiceModel.Activation.WebScriptServiceHostFactory %>