3

是否可以手动使用 ASP.NET WebAPI 创建 RESTful Web 服务,我的意思是,没有 Visual Studio?什么是必需的文件,我应该如何在服务器上安装它们?说,我想重现这个例子

4

2 回答 2

10

是否可以手动使用 ASP.NET WebAPI 创建 RESTful Web 服务,我的意思是,没有 Visual Studio?

当然这是可能的。您所要做的就是使用notepad或任何其他文本编辑器重新创建相同的结构,然后使用csc.exe作为框架一部分的编译器手动编译。

以下是简单的步骤:

  1. notepad.exe ValuesController.cs

    public class ValuesController : System.Web.Http.ApiController
    {
        public object Get(string id)
        {
            return string.Format("id: {0}", id);
        }
    }
    
  2. 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 }
            );
        }
    }
    
  3. notepad.exe Global.asax

    <%@ Application Codebehind="Global.asax.cs" Inherits="MvcApplication" Language="C#" %>
    
  4. 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>
    
  5. mkdir bin

  6. 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

  7. 将您的 Web 服务器指向包含该web.config文件的根目录,一切顺利。

话虽这么说,你必须完全失去理智才能做到这一点,但无论如何,你可以做到。

于 2013-09-16T10:22:26.230 回答
2

使用scriptcs应该很容易。如果您使用Web API 脚本包,您只需要编写控制器。请在此处查看 Glenn Block 的示例代码。在本次演讲结束时,他还在现场展示了它。

于 2013-09-16T10:27:51.533 回答