gpt4 book ai didi

c# - 升级到MVC 5和Web API 2后,如何使我的Web API应用再次运行?

转载 作者:太空狗 更新时间:2023-10-29 21:01:50 25 4
gpt4 key购买 nike

我使用以下指南将Web API应用程序升级到funkelnagelneu版本:

http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2

但是,在完成这些步骤(无论如何,似乎所有这些都应该是自动化的)之后,我尝试运行它,并得到“无法直接启动具有类库输出类型的项目”

Sam Hills Brothers Coffee在这里发生了什么?谁说这是一个类(class)图书馆?

因此,我打开了“项目”>“属性”,并将其更改为“Windows应用程序”(“控制台应用程序”)的输出类型(由于某种原因,它被标记为“类库”-要么不是昨天,要么工作得很好)。和“类库”是唯一的其他选项)。

现在它将无法编译,提示:“程序'c:\Platypus_Server_WebAPI\PlatypusServerWebAPI\PlatypusServerWebAPI\obj\Debug\PlatypusServerWebAPI.exe'不包含适用于入口点的静态'Main'方法...”

鉴于这一难题,如何使我的Web API应用程序备份并运行?

更新

在packages.config中,有两个条目看起来值得一刮即刮:

<package id="Microsoft.AspNet.Providers" version="1.2" targetFramework="net40" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" />

所有其他目标都针对net451。这可能是问题吗?我应该删除这些软件包吗?

更新2

我试图通过NuGet程序包管理器卸载Microsoft.Web.Infrastructure程序包(其描述使我相信我不需要它;而且,它没有依赖项),但它告诉我:“NuGet无法安装或卸载。在以下项目中选择的软件包。[我的]“

更新3

我再次经历了所有步骤,发现我错过了一步。我必须在应用程序web.config文件中更改此条目:
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
</dependentAssembly>

(从“4.0.0.0”到“5.0.0.0”)

...但是我仍然得到相同的结果-它会重建/编译,但无法运行,显示为“无法直接启动具有类库输出类型的项目”

更新4

考虑到错误消息msg,它不能直接打开类库,我想:“确定您不能/不会-这是一个Web应用程序,而不是一个项目。所以我直觉,关闭了项目,然后将其重新打开为网站(而不是重新打开项目)。

至少,这使我更进一步了;现在我看到一个YSOD:

无法加载文件或程序集'System.Web.WebPages.Razor,版本= 3.0.0.0,区域性=中性,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。该系统找不到指定的文件。

更新5

注意:该项目现在(在作为网站打开后)名为“localhost_48614”

并且...不再有“引用”文件夹...?!?!?

关于我得到的YSOD,官方说明( http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and-web-api-2)表示要这样做,我引用:

“将包含“System.Web.WebPages.Razor”的所有元素从版本“2.0.0.0”更新为
版本“3.0.0.0”。”

更新6

当我现在选择工具>库软件包管理器>管理解决方案的NuGet软件包时,我得到:“操作失败。无法找到解决方案目录。请确保已保存解决方案。”

所以我将其保存,并使用这个时髦的新名称保存它(C:\Users\clay\Documents\Visual Studio 2013\Projects\localhost_48614\localhost_48614.sln)

我在NuGet软件包管理器的顶部看到黄色的启蒙小条,告诉
我,“此解决方案缺少某些NuGet软件包。单击以从在线还原
软件包来源。”

我这样做了(单击“还原”按钮),它下载了丢失的程序包...我最终得到了30个程序包。

我尝试再次运行该应用程序/站点,并且…以前的YSOD变成了编译错误:

应用程序前的启动初始化方法在类型System.Web.Mvc.PreApplicationStartCode上启动,引发异常,并出现以下错误消息:无法加载文件或程序集'System.Web.WebPages.Razor,版本= 3.0.0.0,Culture =中性,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。该系统找不到指定的文件..

啊! (这甚至不是像海盗一样说话的日子)。

更新7

我仍然对为什么Humpty Dumpty摔倒并摔坏了王冠(可以这么说)感到好奇,但是我终于投入了毛巾,创建了一个新项目,复制并粘贴代码-而且效果很好(VS 2013和Web API,以及从VS 2008,.NET 3.5客户端应用程序调用的REST方法)。

最佳答案

在迁移指南的最后一步中,您仅删除了所指定的MVC4项目Guid的吗?我遇到了与您相同的问题,当我回溯步骤时,我意识到我已经删除了.csproj文件中的所有三个Guid。我在此元素中还原了其他Guid,该解决方案现在将其识别为MVC应用程序,现在可以正常工作。因此,该行现在显示为:

<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>

希望能有所帮助

关于c# - 升级到MVC 5和Web API 2后,如何使我的Web API应用再次运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19456648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com