WCF: (MTOM) является там каким-либо способом изменить схему, используемую в xop:Content ссылке uris сгенерированный WCF?

Использование WCF http://tempuri/1/number для ссылок uri довольного идентификатора, когда обработка передала запросы MTOM потоком.

Есть ли какой-либо путь, как вынудить WCF использовать другой довольный идентификатор ссылки для xop:Include?

Фон проблемы:

Я создаю клиент.NET для включенного jax MTOM ws веб-сервис Java, который обрабатывает переданные потоком большие загрузки данных. Я имею ручной работы сервис, и контакты данных (WSDL генерировал контракты, не были корректны и не позволил передавать потоком).

Проблема состоит в том, что веб-сервис (jax ws) не получает тело запроса, содержащее данные.

Это получает данные, которые переданы в заголовках.

Мы создали клиент Java для ws - эти работы.

Я получил и сравнил Трафик HTTP при издании запросов от Java и wcf, и единственная разница находится в том, как ссылка довольного идентификатора сгенерирована при регистрации многослойных данных:

  • Использование WCF http://tempuri/1/... Ссылки довольного идентификатора, которые уступают в закодированном значении, как href="cid:http%3A%2F%2Ftempuri.org%2F1%2F634019957020047928"

  • Клиент Java использует "почтовый стиль" uris, как href="cid:3f3ec388-8cd9-47aa-a603-fb1bc17935b8@example.jaxws.sun.com"

Они уступают в следующем, xop-включает (Данные являются единственным элементом в теле мыла) (XOP включает спецификацию),


//WCF:

   


//JAVA:

    

позже, в многослойных данных, содержание упомянуто незакодированным довольным идентификатором:

--uuid:7e166bb7-042f-4ba3-b6ef-98fbbc21244b+id=1
Content-ID: 
Content-Transfer-Encoding: binary
Content-Type: application/octet-stream

Я предполагаю, что может быть ошибка в jax платформе веб-сервиса, и она не распознает WCF-generated+urlencoded ссылки uri довольного идентификатора.

Есть ли какой-либо путь, как вынудить WCF использовать другой довольный идентификатор ссылки для xop:Include?


Править: Я нашел XmlMtomWriter, который имеет метод GenerateUriForMimePart, это используется для генерации довольных идентификаторов.

public static string GenerateUriForMimePart(int index)
{
    return string.Format(CultureInfo.InvariantCulture, 
"http://tempuri.org/{0}/{1}", new object[] { index, DateTime.Now.Ticks });
}

Не кажется, что идентификационное поколение является всегда переопределяемым.

Подобная проблема описана здесь, предоставленный ответ не помогает: http://social.msdn.microsoft.com/Forums/en/wcf/thread/f90affbd-f431-4602-a81d-cc66c049e351

10
задан Community 25 September 2015 в 07:14
поделиться

1 ответ

Отвечаю себе после долгого исследования: невозможно без повторной реализации всего XmlMtomWriter и других связанных уровней и проблем в WCF - почти все, что задействовано в реализации mtom, является внутренним.

1
ответ дан 4 December 2019 в 04:36
поделиться
Другие вопросы по тегам:

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