在这里,我有 WCF REST 中 POST 方法的工作代码:-
首先创建带有 id、uname 和 pwd 字段的数据库表。创建一个存储过程来插入值。
create procedure [dbo].[sproc_Insertusers]
(
@id int out,
@uname nvarchar(50),
@pwd nvarchar(50)
)
as insert into tbl_register
(
[uname],
[pwd]
)
values
(
@uname,
@pwd
)
set @id = @@identity
return @id
创建新的 WCF 项目
在 IService1.cs
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "user_register/{uname}/{pwd}")]
int user_register(string uname,string pwd);
}
在 Service1.cs
public class Service1 : IService1
{
SqlConnection cn = new SqlConnection(ConfigurationManager.AppSettings["iwealth_db"]);
SqlCommand cmd;
DataSet ds;
SqlDataAdapter da;
int result;
public int user_register(string uname, string pwd)
{
cmd = new SqlCommand("sproc_Insertusers", cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@uname",uname);
cmd.Parameters.AddWithValue("@pwd", pwd);
cmd.Parameters.Add("@id", SqlDbType.Int);
cmd.Parameters["@id"].Direction = ParameterDirection.Output;//Output parameter
cn.Open();
cmd.ExecuteNonQuery();
cn.Close();
result = (int)(cmd.Parameters["@id"].Value);
return result;//returning id
}
}
在 web.config 中:-
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="iwealth_db" value="Data Source=localhost;Initial Catalog=iwealth; Trusted_Connection=true"/>
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="iWealthService.Service1" behaviorConfiguration="ServiceBehaviour">
<!-- Service Endpoints -->
<!-- Unless fully qualified, address is relative to base address supplied above -->
<endpoint address ="" binding="webHttpBinding" contract="iWealthService.IService1" behaviorConfiguration="web">
<!--
Upon deployment, the following identity element should be removed or replaced to reflect the
identity under which the deployed service runs. If removed, WCF will infer an appropriate identity
automatically.
-->
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
构建 WCF。现在,下面的代码是如何使用或使用这个 WCF 服务
创建新网站
添加注册按钮以测试此 WCF 服务
和按钮点击代码: -
protected void Button1_Click(object sender, EventArgs e)
{
//in 'sURL' paste WCF service link up to .svc and write -> /user_register/Prateek/1234
//here user_register is service method path and Prateek and 1234 are parameters that will enter to database
string sURL = "http://localhost:49271/Service1.svc/user_register/Prateek/1234";
WebRequest wrGETURL;
wrGETURL = WebRequest.Create(sURL);
wrGETURL.Method = "POST";
wrGETURL.ContentType = @"application/json; charset=utf-8";
HttpWebResponse webresponse = wrGETURL.GetResponse() as HttpWebResponse;
Encoding enc = System.Text.Encoding.GetEncoding("utf-8");
// read response stream from response object
StreamReader loResponseStream = new StreamReader(webresponse.GetResponseStream(), enc);
// read string from stream data
strResult = loResponseStream.ReadToEnd();
// close the stream object
loResponseStream.Close();
// close the response object
webresponse.Close();
// assign the final result to text box
Response.Write(strResult);
}