是否可以手动使用ASP.NET WebAPI创建RESTful Web服务,我的意思是,没有Visual Studio?什么是必需的文件以及如何在服务器上安装它们?说,我想重现this example。
答案 0 :(得分:10)
是否可以使用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
文件的根目录,您就可以了。
话虽如此,你必须完全忘记这样做,但无论如何,你可以做到。
答案 1 :(得分:2)
使用scriptcs应该很容易。如果您使用Web API script pack,则需要编写的所有内容都是控制器。请参阅Glenn Block的示例代码here。他还在this talk结束时展示了它。