当前位置: 首页 > 编程语言 > C#

分享_11113

时间:2023-04-10 16:06:00 C#

使用WebGet的可选UriTemplate参数使用WebGet的可选UriTemplate参数我在WCF服务URI模板中尝试了这些可选参数?KamalRawat发表的博客|.NET4.52012年9月4日本节介绍如何在WCF服务URIinShare中传递可选参数和在WCF中的URITemplate中传递可选查询字符串参数,但对我来说没有任何效果。这是我的代码:[WebGet(UriTemplate="RetrieveUserInformation/{hash}/{app}")]publicstringRetrieveUserInformation(stringhash,stringapp){}如果您填充参数,它会起作用:https://127.0.0.1/Case/Rest/Qr/RetrieveUserInformation/djJUd9879Hf8df/Apple但如果应用程序没有值则无效https://127.0.0.1/Case/Rest/Qr/RetrieveUserInformation/djJUd9879Hf8df我想让应用程序可选。这个怎么做?当应用程序没有值时,这是错误:找不到端点。请参阅服务帮助页面以构建对服务的有效请求。这种情况有两种选择。您可以在{app}参数中使用通配符(*),表示“URI的其余部分”;或者您可以为{app}部分提供默认值,如果它不存在,将使用该默认值。您可以在http://msdn.microsoft.com/en-us/library/bb675245.aspx查看更多关于URI模板的信息,下面的代码显示了两种选择。publicclassStackOverflow_15289120{[ServiceContract]publicclassService{[WebGet(UriTemplate="RetrieveUserInformation/{hash}/{*app}")]publicstringRetrieveUserInformation(stringhash,stringapp){returnhash+"-"+app;}[WebGet(UriTemplate="RetrieveUserInformation2/{hash}/{app=default}")]publicstringRetrieveUserInformation2(stringhash,stringapp){returnhash+"-"+app;}}publicstaticvoidTest(){stringbaseAddress="http://"+Environment.MachineName+":8000/Service";WebServiceHosthost=newWebServiceHost(typeof(Service),newUri(baseAddress));主机.Open();Console.WriteLine("主机打开");WebClientc=newWebClient();Console.WriteLine(c.DownloadString(baseAddress+"/RetrieveUserInformation/dsakldasda/Apple"));控制台.WriteLine();c=新的WebClient();Console.WriteLine(c.DownloadString(baseAddress+"/RetrieveUserInformation/dsakldasda"));控制台.WriteLine();c=新的WebClient();控制台.WriteLine(c.DownloadString(baseAddress+"/RetrieveUserInformation2/dsakldasda"));控制台.WriteLine();Console.Write("按回车键关闭主机");控制台.ReadLine();主机.Close();根据文档,@carlosfigueira针对查询参数的UriTemplate默认值提出的补充答案仅适用于路径段变量。只允许路径段变量有默认值。查询字符串变量、复合段变量和命名通配符变量不允许有默认值。以上就是C#学习教程:使用WebGet可选的UriTemplate参数分享所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: