我已经和asp.net MVC合作了一段时间了,但VisualStudio在幕后做了很多魔术,我觉得我不知道发生了什么。最近,当我尝试将应用程序部署到客户端的服务器时,这引起了一些挫折,而VisualStudio并未发布它所需的一切。在几次尝试失败之后,我最终不得不手动设置引用中的每一个DLL到" Copy Local"使它工作。这是你应该做的吗?你应该部署System和System.Core吗?会不会有问题?谁知道呢?
然后有一些事情,比如创建一个空的Web服务应用程序,它将生成一个70MB的项目!只是试图找出放在源代码控制中的内容本身就是一项耗时的任务。
我不需要JQuery或bootstrap或任何其他javascript文件,主题或字体。我确定我不需要一半被引用的DLL。 web.config非常庞大且难以理解。
我想了解MVC5应用程序的准系统是什么,但无法找到任何资源。我希望学习如何从最小的骨架开始,只添加最少的DLL并编写我自己的构建命令和部署脚本,并在不同的编辑器中编写代码。
这是否可能,或者你是否已经锁定使用Visual Studio并交叉指责它完成所有操作并且项目文件永远不会被破坏?
更新:
来自Claies指出的this answer,以及使用Visual Studio生成的Web API模板,这就是我能够创建一个不需要Visual Studio的准系统Web服务(几乎。)这适用于带有IIS 8的Windows 8.1。
在IIS中设置一个使用.NET v4.5应用程序池的网站。
添加index.html以测试它是否为页面提供服务。
添加Global.asax文件:
<%@ Application Codebehind="Global.asax.cs" Inherits="TestService.WebApiApplication" Language="C#" %>
据我所知,实际上并不需要Web.config文件。但你可以补充一下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authentication mode="None" />
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
</configuration>
创建一个&#34; App_Code&#34;夹。在此文件夹中输入以下文件:
的Global.asax.cs
using System;
using System.Net.Http.Formatting;
using System.Web.Http;
namespace TestService
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
// To return JSON by default, otherwise omit this line
GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(
new RequestHeaderMapping(
"Accept", "text/html", StringComparison.InvariantCultureIgnoreCase,
true, "application/json"
)
);
}
}
}
WebApiConfig.cs
using System.Net.Http;
using System.Web.Http;
namespace TestService
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
TestController.cs(处理/ api /测试请求)
using System.Collections.Generic;
using System.Web.Http;
namespace TestService.Controllers
{
//[Authorize]
public class TestController : ApiController
{
// GET api/Test
//[AllowAnonymous]
public IEnumerable<string> Get()
{
return new string[] { "Hello", "World" };
}
// GET api/Test/5
public Dictionary<string,int> Get(int id)
{
return new Dictionary<string,int> {{"id", id}};
}
// POST api/Test
public void Post([FromBody]string value)
{
}
// PUT api/Test/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/Test/5
public void Delete(int id)
{
}
}
}
创建&#34; bin&#34;夹。所需的最小DLL集是:
要获取这些DLL,您将需要VisualStudio。创建一个新的&#34; ASP.Net Web应用程序&#34;在硬盘上的某个地方,然后选择&#34; Web API&#34;模板。
这将生成一个新项目。展开&#34;参考文献&#34;在解决方案资源管理器中,您可以通过右键单击每个DLL文件并获取&#34;属性&#34;来找到上面列出的所有DLL文件的路径。将它们复制到您的网站&#34; bin&#34;文件夹中。
完成后,您应该能够在浏览器中访问您的网站:
从那以后,您可以根据需要添加配置,代码和DLL。您的项目开始时大约2MB而不是50MB +。您始终可以参考VS生成的Web API项目来帮助您添加其他功能。