将Web API降级为使用MONO在Linux上运行
本文关键字:MONO Linux 运行 Web API 降级 | 更新日期: 2023-09-27 18:10:34
我在c# .net 4.5中用MVC4开发了Restful Web API。现在我需要使用Mono在Cent OS服务器上部署这个Web API。
我在网上看了看,发现我需要将版本降级到4.0才能在Linux机器上使用Mono运行它。
如果有人之前尝试过或有任何想法如何做到这一点,请帮助…!!
要降级,只需执行以下操作:
- 在VS中,将你的项目目标框架改为。net 4,而不是。net 4.5或4.5.1。 更新所有NuGet包。
- 关闭与
- 进入你的项目文件夹,打开package .config。
- 找到那些microt.aspnet。NuGet包的版本从5.1.2改为4.0.30506。
请注意,对于NuGet包降级有一些例外,
- Microsoft.AspNet。Razor需要更改为2.0.30506版本。
- 。
诀窍是去http://nuget.org搜索每个软件包,并选择在2013年5月30日星期四发布的版本。
好运。
根据Lex的回答,我从mono/windows下的一个工作项目开始,这是我从降级中得到的区别…希望能对大家有所帮助。
git diff
diff --git a/MonoApi.csproj b/MonoApi.csproj
index b6fc96f..93f670c 100644
--- a/MonoApi.csproj
+++ b/MonoApi.csproj
@@ -66,14 +66,14 @@
<HintPath>packages'Newtonsoft.Json.6.0.4'lib'net45'Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http.Formatting">
- <HintPath>packages'Microsoft.AspNet.WebApi.Client.5.2.2'lib'net45'System.Net.Http.Formatting.dll</HintPath>
+ <HintPath>packages'Microsoft.AspNet.WebApi.Client.4.0.30506'lib'net40'System.Net.Http.Formatting.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http" />
<Reference Include="System.Web.Http">
- <HintPath>packages'Microsoft.AspNet.WebApi.Core.5.2.2'lib'net45'System.Web.Http.dll</HintPath>
+ <HintPath>packages'Microsoft.AspNet.WebApi.Core.4.0.30506'lib'net40'System.Web.Http.dll</HintPath>
</Reference>
<Reference Include="System.Web.Http.WebHost">
- <HintPath>packages'Microsoft.AspNet.WebApi.WebHost.5.2.2'lib'net45'System.Web.Http.WebHost.dll</HintPath>
+ <HintPath>packages'Microsoft.AspNet.WebApi.WebHost.4.0.30506'lib'net40'System.Web.Http.WebHost.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
diff --git a/Controllers/PersonController.cs b/Controllers/PersonController.cs
index a9c79f0..8a58974 100644
--- a/Controllers/PersonController.cs
+++ b/Controllers/PersonController.cs
@@ -25,7 +25,8 @@ namespace MonoApi.Controllers
Person person = databasePlaceholder.Get(id);
if (person == null)
{
- throw new HttpResponseException(HttpStatusCode.NotFound);
+ // HttpStatusCode method not implemenent on mono https://github.com/mono/aspnetwebstack/blob/current/src/System.Web.Http/HttpResponseException.cs
+ throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound));
}
return person;
}
到目前为止,我的目标仍然是。net 4.5,除了这些包,所以我们将看到如何进行