如何从C#中的WCF Rest服务获取方法名称的所有URLTemplate

时间:2018-04-16 06:22:00

标签: c# asp.net rest web-services wcf

我有一个休息服务网址如下 http://XXXXXXXX/RestServices/Project.svc

这个SVC有两种方法,

[OperationContract]
    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "UserLogin")]
    ResultInfo Login(Login objLogin);

[OperationContract]
    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "SaveUser")]
    ResultInfo User(User objUser);

方法名称是Login和User,但UriTemplate Names是UserLogin和SaveUser。

我想获得C#列表中的输出,如下所示

UserLogin
SaveUser

需要你的帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用以下方法获取方法名称

在ASPX页面中:

<asp:ListBox ID="lstMethodName" runat="server" Visible="true" AutoPostBack="true"
        Style="height: 150px; width:300px; overflow: auto;"></asp:ListBox>

代码背后:

string wsdlUrl = "http://XXXXXXXX/RestServices/Project.svc?wsdl"; // WCF wsdl address
                XmlTextReader myReader = new XmlTextReader(wsdlUrl);
                if (ServiceDescription.CanRead(myReader))
                {
                    ServiceDescription myDescription = ServiceDescription.Read(myReader);

                    foreach (PortType pt in myDescription.PortTypes)
                    {
                        foreach (Operation op in pt.Operations)
                        {
                            lstMethodName.Items.Add(op.Name);
                        }
                    }
                }

添加命名空间:

 using System.Web.Services.Description;
 using System.Collections.Generic;