0. 权宜之计
正如目前票数最高的答案所指出的,
快速修复是使用包管理器,Tools > Nuget package
Manager >包管理器控制台,以运行
更新- package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
1. 代码来重现错误
下面是重现错误的代码:
https://user.it.uu.se/%7Ehesc0353/SrvrErr-reproduce.zip
(来自
https://github.com/aspnet/AspNetDocs/tree/master/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client/sample/server/ProductsApp)
考虑尝试上面zip文件中提供的示例代码。
如果没有更改,则按Ctrl+F5重新生成
这个错误。
2. 更健壮的解决方案
另一种解决方案是从项目的
网络。配置文件。
(Web。Config与.csproj文件在同一目录下。)
这将自动和静默地重新创建您的包,如果它们
人失踪。
打开网络。配置文件在文本编辑器或Visual Studio。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings></appSettings>
...
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
</configuration>
在标签配置>系统。Codedom >编译器>
编译语言="c#;cs;csharp",完全删除
类型属性。
-简而言之,删除开始的行
type = " Microsoft.CodeDom.Providers.DotNetCompilerPlatform。CSharpCodeProvider。
1
Visual Studio将负责其余的工作。
-没有更多的服务器错误在'/'应用程序。
3.HTTP错误403
在上面的例子中,按Ctrl+F5
现在将导致HTTP错误403。
试着在浏览器中替换http://localhost:64195
http://localhost: 64195 / api /产品。
web API现在正确显示:
作为挑衅,我尝试将整个包目录从
Visual Studio项目。
一旦项目完成,它就会自动且无声地重新创建
重建。
参考文献
重现错误的项目文件
原项目
1 .想必同样的修复也适用于Visual Basic
至于c#,但我还没有尝试过。