通过


客户端日志记录 (Windows 媒体格式 11 SDK)

[与此页面关联的功能(Windows Media Format 11 SDK)是一项旧功能。 它已被 源读取器接收器编写器取代。 源读取器接收器编写器 已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 源读取器接收器编写器,而不是 Windows 媒体格式 11 SDK。 Microsoft建议重写使用旧 API 的现有代码,以尽可能使用新 API。]

读取器对象从服务器读取数据时,它会向服务器发送日志记录信息。 内容提供商通常使用此信息来衡量服务质量、生成计费信息或跟踪广告。 日志记录信息不包含任何个人数据。

应用程序可以通过对读取器对象调用 IWMReaderAdvanced::SetClientInfo 方法来指定记录的某些信息。 例如,可以指定用户代理字符串、播放器应用程序的名称或托管玩家的网页。

日志记录信息包括标识会话的 GUID。 默认情况下,读取器生成匿名会话 ID。 (可选)读取器可以发送唯一标识当前用户的 ID。 若要启用此功能,请使用值为 TRUE TRUE调用 IWMReaderAdvanced2::SetLogClientID 方法。

除了原始服务器之外,还可以将读取器对象配置为将日志记录信息发送到另一台服务器。 为此,请使用服务器的 URL 调用 IWMReaderNetworkConfig::AddLoggingUrl 方法。 此 URL 应指向可以处理 HTTP GET 和 POST 请求的脚本或可执行文件。 可以使用多播和日志记录播发代理(wmsiislog.dll),也可以编写自定义 ASP 或 CGI 脚本来接收日志数据。

注意

可以通过使用 logURL 属性创建服务器端播放列表来获取相同的功能。

 

读取器对象发送日志时,它将执行以下作:

  1. 向服务器发送空的 GET 请求。
  2. 分析以下字符串之一的服务器响应:
    • <body><h1>NetShow ISAPI Log Dll</h1>
    • <body><h1>WMS ISAPI Log Dll/0.0.0.0</h1>“0.0.0.0”是任何有效的版本号。
  3. 使用日志信息发送 POST 请求。

以下代码演示一个示例 ASP 脚本,该脚本接收日志记录信息并将其写入文件:

<html>
<body>
<h1>WMS ISAPI Log Dll/9.00.00.00.00</h1>
<%@ Language=VBScript %>
<%
  Dim temp, i, post, file, fso

  ' Convert the binary data to a string.
  For i = 1 To Request.TotalBytes
    temp = Request.BinaryRead(1)
    pose = pose & Chr(AscB(temp))
  Next

  Set fso = createobject("Scripting.FileSystemObject")
  Set file = fso.OpenTextFile("C:\log.txt", 8, TRUE)

  file.writeline Now
  file.writeline post
  file.writeBlankLines 2 
%>
</body>
</html>

可以指定多个服务器来接收日志记录信息;只需在每个 URL 中调用 AddLoggingUrl 一次。 若要清除接收日志的服务器列表,请调用 IWMReaderNetworkConfig::ResetLoggingUrlList 方法。

实现网络功能

IWMReaderAdvanced 接口

IWMReaderAdvanced2 接口