创建 Restful Web 服务以在 C# 中调用存储过程

Posted

技术标签:

【中文标题】创建 Restful Web 服务以在 C# 中调用存储过程【英文标题】:Create Restful webservices to call a stored procedure in C# 【发布时间】:2021-08-21 06:02:38 【问题描述】:

如何在 Visual Studio 2019 中创建 Restful Web 服务以调用存储过程。我尝试使用 SOAP 和 WCF Web 服务,但我不知道如何使用 RESTful Web 服务。我需要在 URI 模板中提供什么?请提供任何示例代码或链接

public interface IRestWebService
    
        [OperationContract]
        [WebInvoke(Method = "GET", UriTemplate = "",
            RequestFormat = WebMessageFormat.,
            ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Wrapped)]
        int callStoredProcedure(string value);
     

【问题讨论】:

您在处理哪一部分,Web 服务还是调用存储过程?您的问题缺乏细节,请向我们展示您尝试过的一些代码。 不要评论更新的信息,编辑问题。并阅读***.com/help/how-to-ask 不要尝试使用 WCF REST 服务,除非您需要维护一些已有 10 年历史的应用程序。在 MVC 和后来的 Web API 之前,WCF REST 是作为权宜之计而创建的。甚至 Web API 现在也有 9 年历史了。它需要 很多 代码,而在 Web API 中只需要几行代码。 在任何情况下,您尝试的是 REST 的相反。对于 REST,URL 表示 对象资源,而对这些资源的操作由 HTTP 动词(如 GET/POST/PUT/PATCH/DELETE)执行。如果要检索所有客户,请在 https://.../Customers 上执行 GET。对于特定客户,请在https://..../Customers/5 上获取。要创建,请在.../Customers 上发布。要编辑,请 PUT ` .../Customers/1` 等 这就是为什么所有 Web API 教程都显示 CustomersController 以及 GetGet(int)Post(Customer) 等操作的原因 【参考方案1】:

使用 Empty 模板创建一个 Asp.Net Web 应用程序并检查 Web Api:

创建项目后,右键单击Controller文件夹并选择Web Api 2 Controller-Empty 现在你有一个 Restful Api 控制器,可以从任何地方调用。(例如从 agular http get 请求服务)


    public class RestWebServiceController : ApiController
    
        SqlConnection con;
        public RestWebServiceController()
        
            con  = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ToString());
        
         

        [HttpGet]
        public IHttpActionResult CallStoredProcedure(string Name)
        
            int ReturnValue = 0;
            SqlCommand cmd = new SqlCommand("StartOnline", con);
            cmd.CommandType = CommandType.StoredProcedure;
            con.Open();
            SqlParameter ret = new SqlParameter();
            ret.Direction = ParameterDirection.ReturnValue;
            cmd.Parameters.AddWithValue("@Name", Name);
            ret.Direction = ParameterDirection.ReturnValue;
            cmd.Parameters.Add(ret);
            cmd.ExecuteNonQuery();
            try
            
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
                ReturnValue = (int)ret.Value;
            
            catch (Exception ex)
            

            
            return Ok(ReturnValue);
        
    
```

【讨论】:

如何在我的客户端(即 windows)应用程序中使用这个宁静的 Web 服务 看看这个链接***.com/questions/32716174/…

以上是关于创建 Restful Web 服务以在 C# 中调用存储过程的主要内容,如果未能解决你的问题,请参考以下文章

要在 C# 中使用 RESTful Web 服务,我应该使用 HttpWebRequest 吗?

解析来自 Restful Web 服务的响应的 C# 代码

在 C# RESTful Web 服务中删除 xml 命名空间返回字符串

在 Java Jersey RESTful Web 应用程序中加载属性文件,以在整个应用程序中持续存在?

C# Web Api一个小例子

C# 服务端篇之实现RestFul Service开发