2010-07-09 21 views
9

Vì vậy, chúng tôi đã nâng cấp trang web của mình từ 3,5 SP1 -> .NET 4.Sự cố với <system.web.extensions> nhóm cấu hình khi nâng cấp lên .NET 4.0

Khi chúng tôi chạy trang web, chúng tôi đã nhận được Nội bộ Lỗi máy chủ (500), trong đó nêu các nhóm cấu hình sau đây có thể không được đọc:

<system.web.extensions> 
     <scripting> 
      <scriptResourceHandler enableCompression="true" enableCaching="true" /> 
      <webServices> 
       <jsonSerialization maxJsonLength="999999" /> 
      </webServices> 
     </scripting> 
    </system.web.extensions> 

chúng tôi nhận xét ra phần này và các trang web chạy tốt (nhưng bây giờ chúng tôi đang nhận được vấn đề với JSON - vì thuộc tính cần thiết ở trên) .

Chúng tôi đã đọc các chủ đề về vấn đề này và hầu hết trong số họ đều nói "Hồ bơi ứng dụng của bạn hiện không chạy 4.0". Và nó là, vì vậy đó không phải là vấn đề.

Tôi cũng đọc chủ đề nói IIS bằng cách nào đó đang đọc tệp machine.config cũ.

Với .NET 4, như bạn biết rất nhiều phần của web.config đã được chuyển đến machine.config.

Vì vậy, chúng tôi đưa phần này trở lại trong top của web.config:

<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
      <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
       <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/> 
       <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
        <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" /> 
        <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> 
        <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> 
        <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" /> 
       </sectionGroup> 
      </sectionGroup> 
     </sectionGroup> 

Và trang web bây giờ có vẻ như làm việc ok.

Tuy nhiên, hãy quan tâm một chút nếu đây là giải pháp đúng.

Mọi ý tưởng mọi người? Đây có phải là bản sửa lỗi chính xác không?

EDIT:

3 tuần và không có câu trả lời ... chết tiệt. =)

+0

Tôi cũng gặp vấn đề tương tự, vì bạn ... Tôi không chắc chắn tại sao, nhưng nếu tôi tìm hiểu lý do, tôi sẽ quay lại với bạn về chủ đề này. –

Trả lời

2

Vì tôi đã không có câu trả lời, và googling rộng lớn dẫn đến không có tình yêu, tôi đã quyết định để dính sửa chữa ban đầu của tôi (thêm phần system.web.extensions trở lại vào web.config).

0

Hai bit thông tin khác có thể có hoặc có thể không hữu ích.

  1. sự khác biệt duy nhất từ ​​phần trênNhóm và phần máy của tôiNhóm là phiên bản = 3.5.0.0 tại đây và phiên bản = 4.0.0.0 trong machine.config. 1.
  2. Lỗi trong nhật ký sự kiện là "Không thể tải tất cả bộ lọc ISAPI cho trang web ..." Có thể cài đặt System.Web.Extensions không được đăng ký đúng với .net 4 không?

Tôi muốn thử nghiệm thêm về điều này, nhưng tiếc là tôi chỉ thấy hành vi này trong hệ thống sản xuất chứ không phải hệ thống nhà phát triển.

2

Gần đây tôi đã gặp sự cố này và có thể giải quyết vấn đề này sau khi khắc phục sự cố. Hy vọng những gì tôi đã làm cũng sẽ giúp khắc phục sự cố của bạn. 1. Đảm bảo rằng ứng dụng bạn đang chạy cho trang web đang sử dụng .NET 4 pipeline 2. Mở tệp .csproj (hoặc .vbproj nếu của bạn là một dự án VB) trong Notepad và duyệt qua tệp và kiểm tra xem có bất kỳ tham chiếu mã hóa cứng cho các tệp khung 2.0. Trong trường hợp của tôi, chúng tôi đã có một nhiệm vụ "Sau khi xây dựng" đã được sử dụng đường dẫn trình biên dịch v2.0 mà buộc các ứng dụng vẫn còn sử dụng 2.0 thời gian chạy. Nó giống như dưới đây.

<Target Name=”AfterBuild” Condition=”’$(MvcBuildViews)’==’true’”> 
<AspNetCompiler Condition=”’$(IsDesktopBuild)’ != ‘false’” VirtualPath=”temp” ToolPath=”$(WINDIR)\Microsoft.NET\Framework\v2.0.50727” PhysicalPath=”$(ProjectDir)\..\$(ProjectName)” /> 
<AspNetCompiler Condition=”’$(IsDesktopBuild)’ == ‘false’” VirtualPath=”temp” ToolPath=”$(WINDIR)\Microsoft.NET\Framework\v2.0.50727” PhysicalPath=”$(OutDir)\_PublishedWebsites\$(ProjectName)” /> 

Hãy chắc chắn rằng để thay đổi chúng để v4.0 hoặc thậm chí tốt hơn làm cho họ confiurable. Hy vọng điều đó sẽ hữu ích.

-Vamsi

Các vấn đề liên quan