2010-05-03 40 views
5

Sau khi triển khai các trang web của tôi để IIS, tôi nhận được thông báo lỗi sau khi cố gắng truy cập vào một phiên:Lỗi sử dụng phiên trong IIS 7

Session State chỉ có thể được sử dụng khi enableSessionState được thiết lập để đúng, hoặc trong tệp cấu hình hoặc trong chỉ thị Trang. cũng hãy chắn rằng System.Web.SessionStateModule hoặc một module trạng thái phiên tùy chỉnh là bao gồm trong phần \\ trong việc áp dụng cấu hình.

Tôi truy cập nó trong Page_Load hoặc PreRender sự kiện (Tôi đã thử cả hai phiên bản). Với Visual Studio Dev Server nó hoạt động mà không có một vấn đề. Tôi đã thử cả InProc một quy trình lưu trữ SessionState, 1 và nhiều công nhân. Tôi đã thêm một trang enableSessionState = "true" vào trang web của mình một cách rõ ràng. Dưới đây là một phần của web.config:

<system.web> 
    <globalization culture="ru-RU" uiCulture="ru-RU" /> 
    <compilation debug="true" defaultLanguage="c#"> 
     <assemblies> 
      <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
      <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
      <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
      <add assembly="System.Web.Extensions.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> 
      <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
     </assemblies> 
    </compilation> 
    <pages enableEventValidation="false" enableSessionState="true"> 
     <controls> 
      <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </controls> 
    </pages> 
    <httpHandlers> 
     <remove verb="*" path="*.asmx" /> 
     <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" /> 
    </httpHandlers> 
    <httpModules> 
     <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     <add name="SearchUrlRewriter" type="Synonymizer.SearchUrlRewriter, Synonymizer, Version=1.0.0.0, Culture=neutral" /> 
     <add name="Session" type="System.Web.SessionStateModule" /> 
    </httpModules> 
    <sessionState cookieless="UseCookies" cookieName="My_SessionId" mode="InProc" stateNetworkTimeout="5" /> 
    <customErrors mode="Off" /> 
</system.web> 

gì khác tôi cần phải làm gì để làm cho nó hoạt động?

Tôi đã cố gắng theo dõi xem IIS có truy cập vào thư mục aspnet_client với Process Monitor và không nhận được quyền truy cập nào không.

+0

Bạn đã bao giờ giải quyết vấn đề này thành công chưa? Bạn vẫn cần trợ giúp với điều này? – jcolebrand

Trả lời

9

Các giải pháp đã xảy ra với rất tò mò. Mặc dù IIS7 jn WIndows 2008R2 trong mô tả lỗi cho biết thêm SessionStateModule vào phần system.web, nó sẽ được thêm vào phần system.webServer.

<system.webServer> 
    <modules> 
     <remove name="Session" /> 
     <add name="Session" type="System.Web.SessionState.SessionStateModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
    </modules> 
</system.webServer> 
+1

bạn nên đánh dấu phần này là câu trả lời. –

+0

Ví dụ này đã khắc phục được sự cố của tôi, nhưng tôi không hiểu tại sao tôi nên thêm mô-đun .net phiên bản 2.0? Ứng dụng của tôi được tạo trên .NET 4 –

0

Phiên sẽ hoạt động trên một ứng dụng đơn giản, trống. Nghĩa là, tất cả các giá trị mặc định sẽ hoạt động.

Nếu nó không hoạt động với các ứng dụng thử nghiệm cơ bản, thì IIS có thể đã bị nhầm lẫn với ứng dụng của bạn.

Thử xóa ứng dụng IIS của bạn. Sau đó tạo một thư mục ảo mới, khởi động lại IIS, và sau đó thêm lại ứng dụng của bạn.

Ngoài ra, hãy kiểm tra kỹ cài đặt ASP.Net của ứng dụng của bạn. Hãy chắc chắn rằng nó được thiết lập để phiên bản chính xác của ASP.Net.

Trong khi tìm kiếm, tôi cũng chạy vào ...

http://ramonaeid.spaces.live.com/blog/cns!A77704F1DB999BB0!181.entry

Hy vọng rằng sẽ giúp.

0

Đảm bảo rằng tên dịch vụ "Dịch vụ trạng thái ASP.NET" đang chạy và sau đó thêm địa chỉ này vào web.config của bạn.

<sessionState mode="InProc" server="127.0.0.1" port="42424" ... > 

tham khảo:

http://msdn.microsoft.com/en-us/library/ms972429.aspx
http://msdn.microsoft.com/en-us/library/h6bb9cz9(VS.71).aspx

Comment:
lẽ là tốt hơn để thay đổi nhãn hiệu các cổng vào cái gì khác. Điều này có thể được thực hiện với regedit.

HKLM \ syste \ CurrentControlSet \ Services \ aspnet_state \ parametres \ Cảng -> 42424

Một số infos thêm:

http://msdn.microsoft.com/en-us/library/ff648667.aspx

0

Có máy chủ cụ này được sử dụng cho bất cứ điều gì khác ? Nó là một máy chủ Windows 2008 và IIS7?

Tôi sẵn sàng đặt cược rằng bạn đang thiếu một số vai trò máy chủ cho IIS, bạn đã kiểm tra chúng bằng cách nhấp chuột phải vào "Máy tính", chọn "Quản lý", sẽ quản lý vai trò (trên cây chính trong máy tính) quản lý) và kiểm tra các bit đã cài đặt cho IIS?

Nếu đây là IIS6 thì bạn có thể có những lo ngại khác. Nhưng tôi nghĩ chúng ta sẽ bắt đầu với một cái gì đó đơn giản, xem nếu chúng ta không thể giúp bạn tìm ra cái này.

0

Cấu trúc thư mục của bạn là gì. Bạn có cấu hình web ở thư mục cao hơn có thể đã vô hiệu hóa điều này một cách rõ ràng không?

Nếu có thể, đăng ký lại asp.net

Open Control Panel 
    Programs\Turn Windows Features on or off 
    Internet Information Services 
     World Wide Web Services 
     Application development Features 
      ASP.Net <-- check mark here 

ref: How to register ASP.NET 2.0 to web server(IIS7)?

0

Cố gắng thêm trong phần trang trong web.config phần sau:

<namespaces> 
    <add namespace="System.Web.SessionState" /> 
<namespaces/> 
Các vấn đề liên quan