Пустой HttpContext при вызове веб-сервиса WCF

Причина в том, что те комбинации года / статуса, которые должны были бы создавать записи с values: 0, не существуют в исходных данных. d3 только повторяет существующих комбинаций ...

Таким образом, вам придется заполнить пробелы своим собственным кодом. Это можно сделать разными способами. Один из них состоит в цепочке .map, которая добавляет пропущенную запись values при необходимости:

d3.csv("https://raw.githubusercontent.com/benubah/rconsortium_projects/master/test.csv")
  .then(function(data) {
    var stat = d3.nest()
      .key(d => d.Year)
      .key(d => d.Status) 
      .rollup(v => v.length)
      .entries(data)
      .map(function (obj) {
           if (obj.values.length === 1) {
               if (obj.values[0].key == "Completed") {
                   obj.values.unshift({ key: "InProgress", values: 0 });
               } else {
                   obj.values.push({ key: "Completed", values: 0 });
               }
           }
           return obj;
      });
      
    console.log(stat);
  });
<script src="https://d3js.org/d3.v5.js"></script>

6
задан JSmyth 10 November 2008 в 22:50
поделиться

5 ответов

Я решил его!

Похож по умолчанию на приложение Silverlight, отправлял все cookie браузеров службе. Один из этих cookie является ".ASPXAUTH" cookie для аутентификации против членства и ролей.

Приложение asp.net однако не отправляло cookie службе. Для отправки cookie авторизации, я использовал следующий код прежде, чем назвать мой метод веб-сервиса.

    using (OperationContextScope scope = new OperationContextScope(ws.InnerChannel))
    {
HttpRequestMessageProperty httpRequest = new HttpRequestMessageProperty();
OperationContext.Current.OutgoingMessageProperties.Add(HttpRequestMessageProperty.Name, httpRequest);

            HttpCookieCollection cc = Page.Request.Cookies;
            if (Request.Cookies[".ASPXAUTH"] != null)
            {
                HttpCookie aCookie = Request.Cookies[".ASPXAUTH"];
                String authcookieValue = Server.HtmlEncode(aCookie.Value);
                httpRequest.Headers.Add("Cookie: " + ".ASPXAUTH=" + authcookieValue);

            }
// Webservice call goes here
    }
2
ответ дан 17 December 2019 в 18:20
поделиться

Не уверенный, как это работает от Silverlight, но не ASP.NET, но для начинающих вот, хорошее сообщение в блоге о том, как установить WCF для работы с поставщиками членства ASP.NET. Существует довольно много шагов, таким образом, это могло быть довольно легко пропустить установку.

После того как Вы получаете ту работу правильно затем, я предполагаю, что оба должны работать правильно.

0
ответ дан 17 December 2019 в 18:20
поделиться

Вместо HTTPContext пробуют ServiceSecurityContext. Текущий. PrimaryIdentity

1
ответ дан 17 December 2019 в 18:20
поделиться

Я думаю, что это может быть, потому что мой wcf сервис находится в моем silverlight.web проекте, и возможно они более дружелюбны когда дело доходит до совместного использования.

Я, возможно, должен читать больше на wcf и создать большее разделение проблем путем установки отдельного проекта веб-сервиса?

0
ответ дан 17 December 2019 в 18:20
поделиться

Обновление:

Хорошо я смотрел на запрос Сообщения HTTP с помощью Скрипача

Похож на Приложение Silverlight, отправляет 'состояние' с cookie авторизации, и мое приложение asp.net не.

Похож я должен отправить состояние + мой cookie авторизации, когда я называю сервис. Я, возможно, должен сформулировать новый вопрос скоро...

0
ответ дан 17 December 2019 в 18:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: