Helpex - Trao đổi & giúp đỡ Đăng nhập
37

Tôi có vai trò web ASP.NET MVC đang chạy trên Windows Azure và đã thiết lập ELMAH đúng cách trong web.config. Tôi cũng có các tuyến đường global.asax bỏ qua * .axd. Tại địa phương, tôi có thể tải /elmah.axd, tuy nhiên khi triển khai lên Azure, tôi nhận được 404 trên trang đó. Có ai nhận ELMAH làm việc trên Azure không?

37 hữu ích 1 bình luận 11k xem chia sẻ
27

Azure dựa trên Windows Server 2008 và IIS7. Điều này có nghĩa là bạn cần điền phần system.webServer của tệp web.config.

Tệp mẫu đi kèm với mã nguồn của elmah chứa các chi tiết mà bạn cần đưa vào.

<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules>
    <remove name="ScriptModule" />
    <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah"/>
  </modules>
  <handlers>
    <remove name="WebServiceHandlerFactory-Integrated"/>
    <remove name="ScriptHandlerFactory" />
    <remove name="ScriptHandlerFactoryAppServices" />
    <remove name="ScriptResource" />
    <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
         type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode"
         type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add name="elmah" verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
  </handlers>
</system.webServer>

Có 2 dòng elmah trong khối xml ở trên mà bạn sẽ cần đưa vào và phần này nói chung nên chứa hầu hết nếu không phải tất cả các phần tử đó.

CHỈNH SỬA: Không còn bắt buộc vì tính năng này hiện được bật theo mặc định:

Để Elmah hoạt động, bạn cũng sẽ cần sửa đổi dòng sau trong tệp ServiceDefinition.csdef của mình:

<WebRole name="WebRole" enableNativeCodeExecution="true">

27 hữu ích 4 bình luận chia sẻ
11

Đồng thời bảo mật tệp để chỉ những người dùng được phép mới có thể xem nhật ký lỗi!

<location path="admin/elmah.axd">
    <system.web>
        <authorization>
            <allow roles="Administrator" />
            <deny users="*" />
        </authorization>
    </system.web>
</location>
11 hữu ích 1 bình luận chia sẻ
9

Tôi nghĩ ngoài ra (với những gì được đề xuất bởi @ mat1t ở đây ), bạn có thể cần đặt quyền truy cập từ xa thành 1:

<elmah>
<security allowRemoteAccess="0" />
..............
..............
</elmah>
9 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ asp.net asp.net mvc azure elmah , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading