共 1 篇文章

标签:用MVC WebApi写接口,网闸上了之后,方法访问不到,端口已经全部开放 (c webapi访问数据库)

用MVC WebApi写接口,网闸上了之后,方法访问不到,端口已经全部开放 (c webapi访问数据库)

VisualStudio为我们提供了专门用于创建ASP.NETWebAPI应用的项目模板,借助于此项目模板提供的向导,我们可以“一键式”创建一个完整的ASP.NETWebAPI项目。在项目创建过程中,VisualStudio会自动为我们添加必要的程序集引用和配置,甚至会为我们自动生成相关的代码,总之一句话:这种通过向导生成的项目在被创建之后其本身就是一个可执行的应用。对于IDE提供的这种旨在提高生产效率的自动化机制,我个人自然是推崇的,但是我更推荐读者朋友们去了解一下这些自动化机制具体为我们做了什么?做这些的目的何在?哪些是必需的,哪些又是不必要的?正是基于这样的目的,在接下来演示的实例中,我们将摒弃VisualStudio为我们提供的向导,完全在创建的空项目中编写我们的程序。这些空项目体现在如右图所示的解决方案结构中。如右图所示,整个解决方案一共包含6个项目,上面介绍的作为“联系人管理器”的单页Web应用对应着项目WebApp,下面的列表给出了包括它在内的所有项目的类型和扮演的角色。·Common:这是一个空的类库项目,仅仅定义了表示联系人的数据类型而已。之所以将数据类型定义在独立的项目中,只要是考虑到它会被多个项目(WebApi和ConsoleApp)所使用。WebApi:这是一个空的类库项目,表现为HttpController类型的WebAPI就定义在此项目中,它具有对Common的项目引用。WebHost:这是一个空的ASP.NETWeb应用,它实现了针对ASP.NETWebAPI的WebHost寄宿,该项目具有针对WebApi的项目引用。SelfHost:这是一个空的控制台应用,旨在模拟ASP.NETWebAPI的SelfHost寄宿指指模式,它同样具有针对WebApi的项目引用。WebApp:这是一个空的ASP.NETWeb应用,代表“联系人管理器”的网页就存在于该项目之中,至于具体的联系人管理功能,自然通过以Ajax的形式调用WebAPI来完成。ConsoleApp:这是一个空的控制台应用,我们用它来模拟如何利用客户端代理来实现对WebAPI的远程调用,它具有针对Common的项目引用。二、定义WebAPI在正式定义WebAPI之前,我们需要在项目Common中定义代表联系人的数据类型Contact。简单起见,我们仅仅为Contact定义了如下几个简单的属性,它们分别代表联系人的ID、姓名、联系、电子邮箱和联系地址。1:publicclassContact2:{3:publicstringId{get;set;}4:publicstringName{get;set;}5:publicstringPhoneNo{get;set;}6:publicstringEmailAddress{get;set;}7:publicstringAddress{get;set;}8:}表现为HttpController的WebAPI定义在WebApi项目之中,我们一般将ApiController作为继承的基类。ApiController定义在“System.Web.Http.dll”程序集中,我们可以在目录“%ProgramFiles%\MicrosoftASP.NET\ASP.NETWebStack5\Packages\”中找到这个程序集。具体来说,该程序集存在于子目录“Microsoft.AspNet.WebApi.Core.5.0.0\lib\net45”中。WebAPI体现在如下所示的ContactsController类型中。在该类型中,我们定义了Get、Post、Put和Delete这4个弊者Action方法,它们分别实现了针对联系人的查询、添加、修改和删除操作。Action方法Get具有一个表示联系人ID的可缺省参数,如果该参数存在则返回对应的联系人,否则返回整个联系人列表。由于ASP.NETWebAPI默认实现了Action方法与HTTP方法的映射,所以方法名也体现了它们各自所能处理租逗薯请求必须采用的HTTP方法。1:publicclassContactsController:ApiController2:{3:staticListcontacts;4:staticintcounter=2;5:6:staticContactsController()7:{8:contacts=newList();9:contacts.Add(newContact{Id=”001″,Name=”张三”,10:PhoneNo=””,EmailAddress=””,11:Address=”江苏省苏州市星湖街328号”});12:contacts.Add(newContact{Id=”002″,Name=”李四”,13:PhoneNo=””,EmailAddress=””,14:Address=”江苏省苏州市金鸡湖大道328号”});15:}16:17:publicIEnumerableGet(stringid=null)18:{19:returnfromcontactincontacts20:wherecontact.Id==id||string.IsNullOrEmpty(id)21:selectcontact;22:}23:24:publicvoidPost(Contactcontact)25:{26:Interlocked.Increment(refcounter);27:contact.Id=counter.ToString(“D3”);28:contacts.Add(contact);29:}30:31:publicvoidPut(Contactcontact)32:{33:contacts.Remove(contacts.First(c=>c.Id==contact.Id));34:contacts.Add(contact);35:}36:37:publicvoidDelete(stringid)38:{39:contacts.Remove(contacts.First(c=>c.Id==id));40:}41:}简单起见,我们利用一个静态字段(contacts)表示存储的联系人列表。当ContactsController类型被加载的时候,我们添加了两个ID分别为“001”和“002”的联系人记录。至于实现联系人CRUD操作的Action方法,我们也省略了必要的验证,对于本书后续的演示的实例,我们基本上也会采用这种“简写”的风格。 相关问题拓展阅读: 关于c webapi访问数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

技术分享