स्ट्रीम किए गए एमटीओएम अनुरोधों को संभालने के दौरान डब्ल्यूसीएफ सामग्री-आईडी यूरी संदर्भों के लिए http://tempuri/1/number
का उपयोग करता है।डब्ल्यूसीएफ: (एमटीओएम) xop में उपयोग की जाने वाली योजना को बदलने का कोई तरीका है: डब्ल्यूसीएफ द्वारा उत्पन्न सामग्री संदर्भ यूआरआईएस?
क्या डब्ल्यूसीएफ को एक्सओपी के लिए एक अलग सामग्री-आईडी संदर्भों का उपयोग करने के लिए मजबूर करने का कोई तरीका है: शामिल करें? समस्या का
पृष्ठभूमि:
मैं हैंडल जो बड़े डेटा अपलोड स्ट्रीम किया MTOM सक्षम jax ws जावा वेब सेवा के लिए एक .NET ग्राहक का निर्माण कर रहा हूँ। मैंने हाथ और सेवा संपर्कों को तैयार किया है (डब्लूएसडीएल जेनरेट किए गए अनुबंध सही नहीं थे और स्ट्रीमिंग की अनुमति नहीं दी गई थी)।
समस्या यह है कि वेब सेवा (जैक्स डब्ल्यूएस) को डेटा युक्त अनुरोध निकाय प्राप्त नहीं होता है।
यह हेडर में स्थानांतरित डेटा प्राप्त करता है।
हमने ws के लिए एक जावा क्लाइंट बनाया है - यह एक काम करता है।
मैं पर कब्जा कर लिया और HTTP यातायात की तुलना में जब जावा और WCF से अनुरोध पत्र जारी करने की है, और फर्क सिर्फ इतना है कि कन्टैंट आईडी संदर्भ उत्पन्न होती है जब बहुखण्डीय डेटा पोस्टिंग में है:
WCF
http://tempuri/1/...
सामग्री का उपयोग करता है -ID संदर्भ जो एन्कोडेड मूल्य में उत्पन्न करते हैं, जैसेhref="cid:http%3A%2F%2Ftempuri.org%2F1%2F634019957020047928"
जावा ग्राहक, "ईमेल शैली" यूआरआई का उपयोग करता
href="cid:[email protected]"
में ये उपज निम्नलिखित पर बाद में XOP-भी शामिल है (डाटा साबुन शरीर में एकमात्र ऐसा तत्व है) (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>
, बहुखण्डीय डेटा में, सामग्री unencoded से जाना जाता है सामग्री-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
मुझे लगता है कि वहाँ jax वेब सेवा ढांचे में एक बग हो सकता है और यह WCF-उत्पन्न + urlencoded सामग्री-आईडी uri संदर्भ पहचान नहीं कर रहा।
क्या डब्ल्यूसीएफ को एक्सओपी के लिए एक अलग सामग्री-आईडी संदर्भों का उपयोग करने के लिए मजबूर करने का कोई तरीका है: शामिल करें?
संपादित करें: मैं 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
हाँ, यह गंदा है, लेकिन काम करने वाले समाधान को खोजने पर बधाई। मैंने प्रतिबिंब के माध्यम से InvariantCulture को बदलने के बारे में सोचा नहीं होगा, लेकिन ऐसा लगता है कि यह वास्तव में एकमात्र विकल्प है। – Marek