如何在没有Visual Studio的情况下使用ASP.NET WebAPI创建RESTful Web服务?

时间:2013-09-16 10:15:19

标签: c# web-services visual-studio rest asp.net-web-api

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

2 个答案:

答案 0 :(得分: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文件的根目录,您就可以了。

  8. 话虽如此,你必须完全忘记这样做,但无论如何,你可以做到。

答案 1 :(得分:2)

使用scriptcs应该很容易。如果您使用Web API script pack,则需要编写的所有内容都是控制器。请参阅Glenn Block的示例代码here。他还在this talk结束时展示了它。