2015-07-07 19 views
8

Tôi tự hỏi cách hiểu biết về ứng dụng hoạt động với cookie vì tôi ... Điện thoạiQuản lý thông tin chi tiết về ứng dụng Cookie

Đây là bài giới thiệu ngắn gọn về lý thuyết:

  1. Bất cứ khi nào ứng dụng Insights SDK nhận được một yêu cầu mà không có những hiểu biết ứng dụng người dùng Cookie theo dõi (do đoạn ứng dụng Insights JS) nó sẽ thiết lập cookie này và bắt đầu một phiên làm việc mới. (từ apmtips)

2.

UserTelemetryInitializer cập nhật IdAcquisitionDate thuộc tính của tài bối cảnh cho tất cả các mục từ xa với giá trị chiết xuất từ ​​ai_user cookie được tạo bởi Appli cation Insights Mã thiết bị JavaScript chạy trong trình duyệt của người dùng.

SessionTelemetryInitializer cập nhật Id tài sản của phiên bối cảnh cho tất cả các mục từ xa với giá trị chiết xuất từ ​​ai_session Cookie được tạo ra bởi mã thiết bị đo đạc ApplicationInsights JavaScript chạy trong trình duyệt của người dùng. (từ azure documentation (Configuring the Application Insights SKD with ApplicationInsights.config))

Vì vậy, có hai cookie: ai_sessionai_user.

Và ở đây có câu hỏi của tôi:

  1. Khi được họ khởi tạo?
  2. Điều gì đang thực hiện?
  3. Tôi có thể ngừng sử dụng chúng bằng cách nào?
  4. Nếu tôi muốn giữ chúng, làm cách nào để thay đổi thời gian hết hạn?

Cố gắng loại bỏ chúng Tôi đã tạo dự án bằng Ứng dụng web ASP.NET sử dụng mẫu mặc định cho Web Api, bao gồm MVC và Web Api.

Thực hiện nghiên cứu tôi tìm thấy this approach để tắt chúng nhưng tôi không có bất kỳ WebSessionTrackingTelemetryModule nào. Vì vậy, tôi nhận xét ra "UserTelemetryInitializer" và "SessionTelemetryInitializer" và đây là những gì tôi có:

<TelemetryInitializers> 

    <Add Type="Microsoft.ApplicationInsights.Extensibility.Web.SyntheticTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" /> 
    <Add Type="Microsoft.ApplicationInsights.Extensibility.Web.ClientIpHeaderTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" /> 
    <Add Type="Microsoft.ApplicationInsights.Extensibility.Web.UserAgentTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" /> 
    <Add Type="Microsoft.ApplicationInsights.Extensibility.Web.OperationNameTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" /> 
    <Add Type="Microsoft.ApplicationInsights.Extensibility.Web.OperationIdTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" /> 

<!--<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.UserTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />--> 
<!--<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.SessionTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" />--> 

<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.AzureRoleEnvironmentTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" /> 
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.DomainNameRoleInstanceTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" /> 
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.BuildInfoConfigComponentVersionTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" /> 
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.DeviceTelemetryInitializer, Microsoft.ApplicationInsights.Extensibility.Web" /> 


</TelemetryInitializers> 

Và:

<TelemetryModules> 

<Add Type="Microsoft.ApplicationInsights.Extensibility.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.ApplicationInsights.Extensibility.DependencyCollector" /> 
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector"/> 
<Add Type="Microsoft.ApplicationInsights.Extensibility.Implementation.Tracing.DiagnosticsTelemetryModule, Microsoft.ApplicationInsights" /> 
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.RequestTrackingTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Web"/> 
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.ExceptionTrackingTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Web" /> 
<Add Type="Microsoft.ApplicationInsights.Extensibility.Web.DeveloperModeWithDebuggerAttachedTelemetryModule, Microsoft.ApplicationInsights.Extensibility.Web" /> 

</TelemetryModules> 

Nhưng nó không tạo sự khác biệt. Hoặc tôi để lại các mô-đun nhận xét hay không, các cookie vẫn đang được tạo ra.

Cố gắng xóa cookie, tôi đã nhận xét các bước đã thực hiện trong Khởi động và loại trừ khỏi dự án của tôi tất cả các tệp .js, nhưng cookie vẫn xuất hiện sau mỗi yêu cầu.

Vì vậy, tại thời điểm này, tôi không hiểu vị trí "Ứng dụng hiểu biết Javascript" diễn ra và tôi đoán rằng những gì tôi thiếu là một cái gì đó trong phần cuối. Liệu tôi có sai?

Cuối cùng, Startup.cs nhận xét của tôi trông giống như:

[assembly: OwinStartupAttribute(typeof(Try001.Startup))] 
namespace Try001 
{ 
    public partial class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      //ConfigureAuth(app); 
     } 
    } 
    } 

Và Global.asax.cs của tôi trông giống như:

public class MvcApplication : System.Web.HttpApplication 
{ 
    protected void Application_Start() 
    { 
     //AreaRegistration.RegisterAllAreas(); 
     //FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     //BundleConfig.RegisterBundles(BundleTable.Bundles); 
    } 
} 

đâu RegisterRoutes chỉ đang làm việc định tuyến mặc định. Vì vậy, tôi nhắm đến việc chỉ làm những việc rất cơ bản để làm cho nó hoạt động, nhưng tôi không có một đầu mối về nơi để tiếp tục đào bới.

Ai đó có thể khai sáng cho tôi?

Cảm ơn bạn đã đọc cho đến nay.

+1

"những hiểu biết ứng dụng javascript" là nghĩa đen một đoạn javascript đó là một trong các mẫu html/cshtml/các tệp chính, tùy thuộc vào loại dự án bạn có. bạn đã thêm ai theo cách thủ công, hoặc bạn đã sử dụng lệnh "thêm thông tin chi tiết về ứng dụng từ xa ..." từ VS vào một dự án mới? –

+0

Đó là nó, nó không phải là phụ trợ như tôi đã đoán nhưng đoạn mã JS trong _Layout.cshtml.Cảm ơn bạn rất nhiều vì đã chỉ cho tôi đúng hướng! – Pliyo

+0

dường như tôi nên có thêm rằng như là một câu trả lời để alexb đã không ăn cắp điểm internet của tôi! : P –

Trả lời

6

Logic khởi chạy cookie xảy ra trong SDK JavaScript thông tin chi tiết về ứng dụng. Nếu bạn nhìn vào nguồn của trang, bạn sẽ thấy JS từ //az416426.vo.msecnd.net/scripts/a/ai.0.js. Bạn cũng có thể đọc/đóng góp vào việc mã nguồn JavaScript SDK trên GitHub: https://github.com/Microsoft/ApplicationInsights-JS

Trả lời cho câu hỏi của bạn:

Khi được họ khởi tạo và những gì đang làm việc đó? Chúng được khởi tạo bởi JavaScript SDK khi nó cố gắng gửi bất kỳ mục từ xa nào và kiểm tra nếu cookie không có mặt, nó tạo ra chúng. Để biết chi tiết, xem https://github.com/Microsoft/ApplicationInsights-JS/blob/master/JavaScript/JavaScriptSDK/Context/User.ts, cũng có logic tương tự cho cookie phiên.

Tôi có thể ngừng sử dụng chúng bằng cách nào? Bạn không thể vô hiệu hóa các cookie này nếu bạn đang sử dụng JavaScript SDK, cách duy nhất là xóa JavaScript SDK (bằng cách xóa đoạn mã thêm vào JavaScript), tuy nhiên điều này có nghĩa là bạn sẽ không còn có tính năng từ xa phía khách, như lượt xem trang và hiệu suất của khách hàng cũng như thông tin người dùng/phiên.

Nếu tôi muốn giữ chúng, làm cách nào để thay đổi thời gian hết hạn? Có hai cài đặt bạn có thể kiểm soát: thời gian đổi mới

  • phiên - bao nhiêu thời gian trôi qua trước khi phiên được thiết lập lại không có hoạt động (mặc định là 30 phút)
  • phiên thời gian hết hạn - bao nhiêu thời gian trôi qua trước phiên được đặt lại ngay cả với hoạt động (mặc định là 24 giờ).

Để thay đổi chúng thiết lập giá trị sau trong đoạn này bên cạnh nơi mà chính thiết bị đo đạc được thiết lập:

 ..snippet.. 
}({ 
     instrumentationKey: "<your key>", 
     sessionRenewalMs:<your custom value in ms>, 
     sessionExpirationMs:<your custom value in ms> 

    }); 
+0

Điều đó giải quyết vấn đề của tôi và dạy tôi nhiều hơn những gì tôi nghĩ rằng tôi có thể làm. Cảm ơn bạn rất nhiều vì câu trả lời rộng của bạn, phần mã chỉ đóng đinh nó, thực sự đánh giá cao rằng – Pliyo

+0

Vì vậy, không có cách nào để đặt ví dụ: AuthenticatedUserId và AccountId phía máy chủ, và khởi tạo phía máy chủ cookie? Không phải là Thông tin chi tiết về ứng dụng đã bỏ lỡ yêu cầu đầu tiên (vì cookie chỉ được đặt phía máy khách để đáp ứng yêu cầu đầu tiên này)? –

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