使Web服务字段的输入是可选的,而不是必需的
本文关键字:字段 Web 输入 服务 | 更新日期: 2023-09-27 17:54:49
我创建了一个示例web服务,它将向用户询问一些信息,并以JSON形式返回所需的所有信息。我有两个问题
- 我不想要求用户输入新日期和续订日期,我想让其中一个是必需的,而另一个是可选的
- 如果两个日期,新的和更新,输入然后用户将得到它全部在一个JSON中,但我不确定如何将两个列表附加在一起。
请让我知道如果你需要更多的信息,这是我的代码为webservice
namespace WebServiceTest
{
/// <summary>
/// Summary description for WebServicePrueba
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class WebServicePrueba : System.Web.Services.WebService
{
private string User { get; set; }
private string UserID { get; set; }
private DateTime NewServiceDate { get; set; }
private DateTime NewServicesTo { get; set; }
private DateTime RenewServiceDate { get; set; }
private DateTime RenewServiceTo { get; set; }
[System.Web.Services.WebMethod(Description = "Get Services Received", EnableSession = true)]
public string getSeviceInformation(string name, string userId, DateTime newServiceDate, DateTime newServicesTo, DateTime renewServiceDate, DateTime renewServiceTo)
{
User = name;
UserID = userId;
NewServiceDate = newServiceDate;
NewServicesTo = newServicesTo;
RenewServiceDate = renewServiceDate;
RenewServiceTo = renewServiceTo;
if (User == "prueba" && UserID == "prueba")
{
if (renewServiceDate == DateTime.MinValue || renewServiceTo == DateTime.MinValue)
{
ArrayList list = this.participant.getAddedTRCTest(newServiceDate, newServicesTo);
return JsonConvert.SerializeObject(list);
}
else if (newServiceDate == DateTime.MinValue || newServicesTo == DateTime.MinValue)
{
ArrayList list = this.participant.getModifiedTRCTest(renewServiceDate, renewServiceTo);
return JsonConvert.SerializeObject(list);
}
else
{
ArrayList list = this.participant.getAddedTRCTest(newServiceDate, newServicesTo);
ArrayList list2 = this.participant.getModifiedTRCTest(renewServiceDate, renewServiceTo);
return JsonConvert.SerializeObject(list);
}
}
else if (User != "prueba" && UserID == "prueba")
{
return "Please check your username";
}
else if (User == "prueba" && UserID != "prueba")
{
return "Please check your UserID";
}
else
{
return "Please check both your username and userID";
}
}
}
}
这是我得到的错误,当我运行web服务,不输入日期之一(即我输入newServiceDate
和newServicesTo
,但不是renewServiceDate
和renewServiceTo
或其他方式
System.ArgumentException: Cannot convert to System.DateTime.
Parameter name: type ---> System.FormatException: String was not recognized as a valid DateTime.
at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
at System.Convert.ToDateTime(String value, IFormatProvider provider)
at System.String.System.IConvertible.ToDateTime(IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
--- End of inner exception stack trace ---
at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)
at System.Web.Services.Protocols.HtmlFormParameterReader.Read(HttpRequest request)
at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
----------------------------- 更新 ------------------------
@Jianping Liu当我在函数中声明可空参数时,我不再能够测试webservice,我得到"测试
test表单只适用于以基本类型作为参数的方法。下面是我如何声明它的
[System.Web.Services.WebMethod(Description = "Get Services Received", EnableSession = true)]
public string getSeviceInformation(string name, string userId, DateTime? newServiceDate, DateTime? newServicesTo, DateTime? renewServiceDate, DateTime? renewServiceTo)
您可以为您的4 DateTime使用可空变量
private DateTime? NewServiceDate { get; set; }
private DateTime? NewServicesTo { get; set; }
private DateTime? RenewServiceDate { get; set; }
private DateTime? RenewServiceTo { get; set; }
并使用NewServiceDate。
- 使用可空的DateTime
getserviceinformation方法签名:getserviceinformation (string name, string userId, DateTime?)DateTime, newServiceDate吗?DateTime, newServicesTo吗?DateTime, renewServiceDate吗?renewServiceTo)
- 检查哪些日期有值;
如果(newServiceDate.HasValue)……