覆盖 Exchange 请求的默认 User-Agent header

Overriding the default User-Agent header for Exchange request

我正在向 EWS 发送如下请求:

var service = new ExchangeService(exchangeVersion)
                                  {
                                      KeepAlive = true,
                                      Url = new Uri("some autodiscovery url"),
                                      Credentials = new NetworkCredential(username, password),
                                      UserAgent = "myClient"
                                  };

var subscription = service.SubscribeToPushNotifications(
                                    new[] { inboxFolderFoldeID },
                                    new Uri("some post back url"),
                                    15,
                                    null,
                                    EventType.NewMail,
                                    EventType.Created,
                                    EventType.Deleted,
                                    EventType.Modified,
                                    EventType.Moved,
                                    EventType.Copied);

但是,它会导致请求将 User-Agent header 作为 myClient (ExchangeServicesClient/15.00.0913.015),其中字符串的其余部分来自使用此默认值的 EWS 库.有没有办法删除 header 的默认部分并将其设为 myClient?

编辑:我可以看到 EWS 库似乎只是在请求中传递的值前加上前缀:https://github.com/OfficeDev/ews-managed-api/blob/master/Core/ExchangeServiceBase.cs

您需要从 GitHub 重新编译库,因为现有变量的范围不允许您以任何其他方式更改它们。例如,您需要做的就是修改 UserAgent

    public string UserAgent
    {
        get { return this.userAgent; }
        set { this.userAgent = value + " (" + ExchangeService.defaultUserAgent + ")"; }
    }

并删除前缀,然后当您在 ExchangeService class 上设置 属性 时,它将只是您的自定义值。