带有参数的 Wcf Restful 服务发布用户名
Posted
技术标签:
【中文标题】带有参数的 Wcf Restful 服务发布用户名【英文标题】:Wcf Restful service post username with parameter 【发布时间】:2017-01-13 17:30:00 【问题描述】:我是开发人员C# .Net 我现在编写一个 Wcf restful 服务 用于与我的服务器通信 mobile。但是使用带有参数的 post 方法 发送 json 请求 时出现问题。从客户端发送请求后,服务器显示错误: 400 错误请求...
我的服务合同:
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json, UriTemplate = "login", BodyStyle = WebMessageBodyStyle.WrappedRequest)]
[OperationContract]
string login(string username, string password);
并实施服务:
public string login(string username, string password)
string str = String.Empty;
if (username == "admin" && password == "admin")
str = "Success";
else
str = "Invalid";
return str;
编辑:
我的主人是:
public void Start()
Stop();
//string strAdrHTTP = "http://localhost:" + HttpPort + "/WcfMobileService";
string strAdrHTTP = "http://192.168.1.190:" + HttpPort + "/WcfMobileService";
Uri[] adrbase = new Uri(strAdrHTTP) ;
m_svcHost = new ServiceHost(typeof(TWcfMobileService), adrbase);
WebServiceHost webServiceHost =
new WebServiceHost(typeof(TWcfMobileService), adrbase);
ServiceMetadataBehavior mBehave = new ServiceMetadataBehavior();
m_svcHost.Description.Behaviors.Add(mBehave);
mBehave.HttpsGetEnabled = true;
mBehave.HttpGetEnabled = true;
WebHttpBinding webBinding = new WebHttpBinding();
webServiceHost.AddServiceEndpoint(typeof(IWcfMobileServiceContract), webBinding, "rest");
WebHttpBinding restBinding = new WebHttpBinding();
ServiceEndpoint restSEP =
m_svcHost.AddServiceEndpoint(typeof(IWcfMobileServiceContract),
restBinding, "rest");
restSEP.Behaviors.Add(new WebHttpBehavior());
EndpointAddress myEndpointAdd = new EndpointAddress(new Uri(strAdrHTTP),
EndpointIdentity.CreateDnsIdentity("localhost"));
restSEP.Address = myEndpointAdd;
m_svcHost.AddServiceEndpoint(typeof(IMetadataExchange),
MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
ServiceDebugBehavior debug = new ServiceDebugBehavior();
debug.IncludeExceptionDetailInFaults = true;
m_svcHost.Open();
【问题讨论】:
删除BodyStyle = WebMessageBodyStyle.WrappedRequest
@AmitKumarGhosh 不工作
【参考方案1】:
这是一个工作示例 -
[OperationContract]
[WebInvoke(
Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
UriTemplate = "login")]
string login(CompositeType request);
在哪里-
[DataContract]
public class CompositeType
[DataMember]
public string username get; set;
[DataMember]
public string password get; set;
样品请求 -
"request":"username":"test","password":"test"
而且它有效 -
【讨论】:
感谢您的回答,当我使用此示例时,我收到了错误请求 (400)以上是关于带有参数的 Wcf Restful 服务发布用户名的主要内容,如果未能解决你的问题,请参考以下文章
带有 Restful API 和循环引用问题的 WCF 服务
如何使用用户名/密码 + SSL 使用 WCF 配置安全 RESTful 服务