繁体   English   中英

升级到MVC 5和Web API 2后,如何让我的Web API应用程序再次运行?

[英]How can I get my Web API app to run again after upgrading to MVC 5 and Web API 2?

我使用此指南将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正在这里发生什么? 谁说这是一个班级图书馆?

所以我打开了Project> Properties,并对其进行了更改(由于某种原因,它标记为“类库” - 它要么不是昨天,要么工作正常)到“Windows应用程序”的输出类型(“控制台应用程序”)和“类库”是唯一的其他选项)。

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

鉴于这种困境,如何让我的Web API应用程序重新启动并运行?

UPDATE

查看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

我再次走了几步,发现我错过了一步。 我不得不在Application 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

考虑到错误信息,它不能直接打开一个类库,我想,“当然你不能/不会 - 这是一个网络应用程序,而不是一个项目。所以我跟着预感,关闭了项目,并重新打开它作为一个网站(而不是重新开放项目)。

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

无法加载文件或程序集'System.Web.WebPages.Razor,Version = 3.0.0.0,Culture = neutral,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个软件包。

我尝试再次运行app / site,并且......以前的YSOD成为编译错误:

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

Argghhhh! (而且它甚至不是像海盗一样的谈话)。

更新7

我仍然很好奇为什么Humpty Dumpty倒下并打破了他的王冠(可以这么说),但我终于全力以赴,创建了一个新的项目,复制和粘贴代码 - 它工作得很好(VS 2013和Web API,使用从VS 2008,.NET 3.5客户端应用程序调用的REST方法)。

在迁移指南的最后一步中,您是否删除了指定的MVC4 Project Guid? 我遇到了和你一样的问题,当我回溯我的步骤时意识到我已经删除了我的.csproj文件中的所有三个Guid。 我在此元素中恢复了其他Guids,解决方案现在将其识别为MVC应用程序,现在可以正常工作。 所以该行现在写道:

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

希望有所帮助

我最近遇到了这个问题,但这是一个简单的修复。 我的解决方案中有多个项目(包括几个共享PCL),当我卸载项目以更改ProjectTypeGuids时,它将PCL设置为默认值。 右键单击我的Web服务项目并将其设置回默认的启动项目,修复它并且一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM