是否可以手动使用 ASP.NET WebAPI 创建 RESTful Web 服务,我的意思是,没有 Visual Studio?什么是必需的文件,我应该如何在服务器上安装它们?说,我想重现这个例子。
2 回答
是否可以手动使用 ASP.NET WebAPI 创建 RESTful Web 服务,我的意思是,没有 Visual Studio?
当然这是可能的。您所要做的就是使用notepad
或任何其他文本编辑器重新创建相同的结构,然后使用csc.exe
作为框架一部分的编译器手动编译。
以下是简单的步骤:
notepad.exe ValuesController.cs
:public class ValuesController : System.Web.Http.ApiController { public object Get(string id) { return string.Format("id: {0}", id); } }
notepad.exe Global.asax.cs
:using System.Web.Http; public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { GlobalConfiguration.Configuration.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = System.Web.Http.RouteParameter.Optional } ); } }
notepad.exe Global.asax
:<%@ Application Codebehind="Global.asax.cs" Inherits="MvcApplication" Language="C#" %>
notepad web.config
:<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <validation validateIntegratedModeConfiguration="true" /> <modules runAllManagedModulesForAllRequests="true" /> <handlers> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers> </system.webServer> </configuration>
mkdir bin
csc /target:library /out:bin\MvcApplication1.dll /reference:"c:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Web.Http.dll" /reference:"c:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Web.Http.WebHost.dll" /reference:"c:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Net.Http.dll" ValuesController.cs Global.asax.cs
将您的 Web 服务器指向包含该
web.config
文件的根目录,一切顺利。
话虽这么说,你必须完全失去理智才能做到这一点,但无论如何,你可以做到。
使用scriptcs应该很容易。如果您使用Web API 脚本包,您只需要编写控制器。请在此处查看 Glenn Block 的示例代码。在本次演讲结束时,他还在现场展示了它。