簡體   English   中英

將Web API降級為使用MONO在Linux上運行

[英]Downgrade Web API to run on Linux using MONO

我在C#.net 4.5中使用MVC4開發了Restful Web API。 現在我需要使用Mono在Cent OS Sever上部署此Web API。

我環顧網絡發現我需要將版本降級到4.0,以便在Linux機器上使用Mono運行它。

如果任何人在嘗試過此之前或有任何想法如何做,那么請幫助......!

要降級,只需執行以下操作,

  1. 在VS中,將項目目標框架更改為.NET 4而不是.NET 4.5或4.5.1。
  2. 更新所有NuGet包。
  3. 關閉VS.
  4. 轉到項目文件夾並打開packages.config。
  5. 找到那些Microsoft.AspNet。* NuGet包並將其版本從5.1.2更改為4.0.30506。

請注意,對於NuGet包降級,有一些例外,

  • Microsoft.AspNet.Razor需要更改為2.0.30506版。
  • 很多其他的。

訣竅是訪問http://nuget.org並搜索每個軟件包,並選擇2013年5月30日星期四發布的版本。

祝好運。

繼Lex的答案之后,我開始在單聲道/窗口下進行一個工作項目,這是我從降級中得到的差異......希望它有助於某人。

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;
  }

到目前為止,除了這些軟件包之外,我仍然以dot net 4.5為目標,因此我們將看到這是怎么回事

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM