WCF는 스트리밍 된 MTOM 요청을 처리 할 때 Content-ID URI 참조에 http://tempuri/1/number
을 사용합니다.WCF : (MTOM) xop에서 사용 된 구성표를 변경할 수있는 방법이 있습니까? WCF에서 생성 한 내용 참조 uris?
WCF가 xop에 대해 다른 Content-ID 참조를 사용하도록하는 방법이 있습니까? 다음을 포함합니까? 문제의
배경 :
내가 큰 데이터 업로드를 스트리밍 핸들 MTOM을 사용 잭스 WS 자바 웹 서비스를위한 .NET 클라이언트를 구축하고있다. 손으로 서비스 및 데이터 연락처를 만들었습니다 (WSDL 생성 계약은 정확하지 않았으며 스트리밍을 허용하지 않았습니다).
웹 서비스 (jax ws)가 데이터를 포함하는 요청 본문을받지 못하는 것이 문제입니다.
헤더로 전송 된 데이터를 수신합니다.
우리는 ws 용 자바 클라이언트를 만들었습니다. 이것은 작동합니다.
내가 캡처 자바와 WCF 요청을 발행 할 때 HTTP 트래픽을 비교하고, 유일한 차이점은 다중 데이터를 게시 할 때의 Content-ID 참조가 생성되는 방식에있다 :
WCF는
http://tempuri/1/...
콘텐츠 사용href="cid:http%3A%2F%2Ftempuri.org%2F1%2F634019957020047928"
자바 클라이언트와 같은 인코딩 값을 산출 -ID 참조,
href="cid:[email protected]"
이러한 수율 상기 멀티 데이터, 콘텐츠가 인코딩되지 의해 참조되며, 이후에 (데이터는 SOAP 바디에서 유일한 요소) (XOP includes specification)
//WCF:
<Data>
<xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:http%3A%2F%2Ftempuri.org%2F1%2F634019957020047928" />
</Data>
//JAVA:
<Data>
<xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:[email protected]"/>
</Data>
XOP가-포함 다음 콘텐츠 ID :
--uuid:7e166bb7-042f-4ba3-b6ef-98fbbc21244b+id=1
Content-ID: <http://tempuri.org/1/634019957020047928>
Content-Transfer-Encoding: binary
Content-Type: application/octet-stream
나는이 가 잭스 웹 서비스 프레임 워크의 버그 일 수 있으며이 + WCF 생성 urlencode되고 콘텐츠 ID URI 참조를 인식하지 않는 것 같아요.
WCF가 xop에 대해 다른 Content-ID 참조를 사용하도록하는 방법이 있습니까? 다음을 포함합니까?
편집 : 나는 GenerateUriForMimePart 방법이있는 XmlMtomWriter을 발견, 이것은 콘텐츠 ID를 생성하는 데 사용됩니다.
public static string GenerateUriForMimePart(int index)
{
return string.Format(CultureInfo.InvariantCulture,
"http://tempuri.org/{0}/{1}", new object[] { index, DateTime.Now.Ticks });
}
ID 생성이 어떤 방식 으로든 무시할 수있는 것처럼 보이지 않습니다.http://social.msdn.microsoft.com/Forums/en/wcf/thread/f90affbd-f431-4602-a81d-cc66c049e351
네, 이건 더럽지 만 작동하는 해결책을 찾는 것을 축하드립니다. 리플렉션을 통해 InvariantCulture를 대체 할 생각은 없었지만 실제로는 유일한 옵션 인 것 같습니다. – Marek