Như đã ghi nhận của /programming/32780315#34391473 , sửa chữa nhanh chóng là sử dụng trình quản lý gói,
Tools
> Nuget Package Manager
> Package Manager Console
, để chạy
Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
Nhưng một giải pháp thay thế (tự động và âm thầm tạo lại các gói của bạn nếu chúng bị thiếu) là xóa một thuộc tính của Web.config
tệp dự án của bạn .
( Web.config
nằm trong cùng thư mục với.csproj
tệp .)
Mở Web.config
tệp trong trình soạn thảo văn bản (hoặc bên trong Visual Studio).
- Trong thẻ configuration
> system.codedom
> compilers
> compiler language="c#;cs;csharp"
, hoàn toàn loại bỏ các type
thuộc tính.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- ... -->
<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>
Trong ngắn hạn, loại bỏ các dòng bắt đầu với type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft
.
(Có lẽ, bản sửa lỗi tương tự hoạt động cho Visual Basic cũng như cho Csharp, nhưng tôi chưa thử.)
Visual Studio sẽ chăm sóc phần còn lại. Không còn nữa Server Error in '/' Application
.
Trong mã ví dụ tôi đã cung cấp trong tệp zip ở trên, bây giờ bạn sẽ nhận được HTTP Error 403
khi bạn nhấn Ctrl+ F5.
Hãy thử thay thế http://localhost:64195
trong trình duyệt web của bạn với http://localhost:64195/api/products
.
API web hiện hiển thị như mong muốn:
Như một sự khiêu khích, tôi đã thử xóa toàn bộ package
thư mục của giải pháp Visual Studio.
Nó được tự động và âm thầm tái tạo ngay sau khi tôi (tái) xây dựng nó.
Cuối cùng nhưng không kém phần quan trọng, đây là mã tái tạo lỗi:
http://schulze.000webhostapp.com/vs/SrvrErr-reproduce.zip (Nguyên văn từ
https://github.com/aspnet/AspNetDocs/tree/master/aspnet / web-api / tổng quan / nâng cao / gọi-a-web-api-từ-a-net-client / sample / server / ProductsApp )