C#写的webservice实现可选参数

发布于 2022-09-05 03:15:40 字数 854 浏览 26 评论 0

临时用c#写一个项目,使用asmx实现webservice。代码如下:

    [WebMethod]
    public void AddGroup(String app_key, String app_secret, String group_name)
    {
        String res = addGroup.add(app_key, app_secret, group_name);
        
        Context.Response.Charset = "UTF-8";
        Context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
        Context.Response.Write(res);
        Context.Response.End();
    }

需要实现group_name字段参数可以选择是否传入,现在如果不传入group_name的话C#会自动返回参数不全。如下:

System.InvalidOperationException: 缺少参数: finger_print_base64。
   在 System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)
   在 System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
   在 System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

拥有 2022-09-12 03:15:40

使用方法重载。
需要在类之前添加WebServiceBinding

[WebServiceBinding(ConformsTo = WsiProfiles.None)]

在方法前添加MessageName

[WebMethod(MessageName = "NoFingerPrint")]

保证两个方法的MessageName内容不同即可

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
public class person : System.Web.Services.WebService
{
    [WebMethod(MessageName = "NoFingerPrint")]
    public void AddPerson(String app_key, String app_secret, String group_name, String person_id)
    {

    }

    [WebMethod(MessageName = "OneFingerPrint")]
    public void AddPerson(String app_key, String app_secret, String group_name, String person_id, String finger_print_base64)
    {

    }
}
土豪 2022-09-12 03:15:40

貌似不传也没啥影响

[WebMethod]
public string test(string a,string b)
{
    return a + b;
}

图片描述

图片描述

盛装女皇 2022-09-12 03:15:40

[WebMethod]

public void AddGroup(String app_key, String app_secret, String group_name="")
{
    String res = addGroup.add(app_key, app_secret, group_name);
    
    Context.Response.Charset = "UTF-8";
    Context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
    Context.Response.Write(res);
    Context.Response.End();
}

给个默认值试试

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文