คำถามติดแท็ก wcf

Windows Communication Foundation เป็นส่วนหนึ่งของ. NET Framework ที่มีรูปแบบการเขียนโปรแกรมแบบครบวงจรสำหรับการสร้างแอปพลิเคชันที่มุ่งเน้นบริการอย่างรวดเร็ว

30
ข้อผิดพลาด 5: การเข้าถึงถูกปฏิเสธเมื่อเริ่มบริการ windows
ฉันได้รับข้อผิดพลาดนี้เมื่อฉันพยายามเริ่มบริการ windows ที่ฉันสร้างใน C #: รหัสของฉันจนถึงตอนนี้: private ServiceHost host = null; public RightAccessHost() { InitializeComponent(); } protected override void OnStart(string[] args) { host = new ServiceHost(typeof(RightAccessWcf)); host.Open(); } protected override void OnStop() { if (host != null) host.Close(); host = null; } อัปเดต # 1 ฉันแก้ไขปัญหาข้างต้นโดยให้สิทธิ์แก่บัญชีNETWORK SERVICEแต่ตอนนี้ฉันมีปัญหาอื่น: อัปเดต # 2 …

9
WCF เน้นคุณสมบัติโดยไม่มี "set" วิธีแก้ปัญหาใด ๆ
ฉันมีคลาสบางคลาสที่ฉันผ่านเนื่องจากเมธอดบริการและคลาสนั้นมีคุณสมบัติรับอย่างเดียว: [DataContract] public class ErrorBase { [DataMember] public virtual string Message { get { return ""; } } } ฉันได้รับข้อยกเว้นในด้านการบริการ: System.Runtime.Serialization.InvalidDataContractException: ไม่ได้ตั้งค่าวิธีการสำหรับคุณสมบัติ 'ข้อความ' ในประเภท 'MyNamespace.ErrorBase' ฉันต้องมีคุณสมบัตินี้เป็นเพียงผู้เริ่มต้นฉันไม่สามารถอนุญาตให้ผู้ใช้กำหนดค่าได้ วิธีแก้ปัญหาใด ๆ ที่ฉันสามารถใช้ได้? หรือฉันไม่มีคุณสมบัติเพิ่มเติมบางอย่าง?

3
การบีบอัดสตรีม GZip จากการตอบสนองของ HTTPClient
ฉันกำลังพยายามเชื่อมต่อกับ api ซึ่งส่งคืน GZip ที่เข้ารหัส JSON จากบริการ WCF (บริการ WCF ไปยังบริการ WCF) ฉันใช้HTTPClientเพื่อเชื่อมต่อกับ API และสามารถส่งคืนออบเจ็กต์ JSON เป็นสตริงได้ อย่างไรก็ตามฉันต้องสามารถจัดเก็บข้อมูลที่ส่งคืนนี้ในฐานข้อมูลและด้วยเหตุนี้ฉันจึงคิดว่าวิธีที่ดีที่สุดคือการส่งคืนและจัดเก็บออบเจ็กต์ JSON ในอาร์เรย์หรือไบต์หรือบางอย่างตามบรรทัดเหล่านั้น สิ่งที่ฉันมีปัญหาโดยเฉพาะคือการคลายการบีบอัดการเข้ารหัส GZip และได้ลองใช้ตัวอย่างต่างๆมากมาย แต่ก็ยังไม่สามารถรับได้ โค้ดด้านล่างคือวิธีที่ฉันสร้างการเชื่อมต่อและรับการตอบกลับนี่คือรหัสที่ส่งคืนสตริงจาก API public string getData(string foo) { string url = ""; HttpClient client = new HttpClient(); HttpResponseMessage response; string responseJsonContent; try { client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); response = …
97 c#  json  wcf  gzip 

9
อะไรแทนที่ WCF ใน. Net Core
ฉันคุ้นเคยกับการสร้างแอปพลิเคชันคอนโซล. Net Framework และเปิดเผยAdd(int x, int y)ฟังก์ชันผ่านบริการ WCF ตั้งแต่เริ่มต้นด้วย Class Library (.Net Framework) จากนั้นฉันใช้แอปพลิเคชันคอนโซลเพื่อพร็อกซีเรียกใช้ฟังก์ชันนี้ภายในเซิร์ฟเวอร์ อย่างไรก็ตามหากฉันใช้ Console App (.Net Core) และ Class Library (.Net Core) System.ServiceModel จะไม่พร้อมใช้งาน ฉันได้ทำ Googling ไปบ้างแล้ว แต่ยังไม่ทราบว่า WCF "แทนที่" อะไรในอินสแตนซ์นี้ ฉันจะแสดงAdd(int x, int y)ฟังก์ชันภายในไลบรารีคลาสไปยังแอปพลิเคชันคอนโซลทั้งหมดภายใน. Net Core ได้อย่างไร ฉันเห็น System.ServiceModel.Web และเนื่องจากนี่เป็นการพยายามข้ามแพลตฟอร์มฉันจึงต้องสร้างบริการ RESTful หรือไม่
96 c#  .net  wcf  service  .net-core 

17
ไม่สามารถเพิ่มการอ้างอิงถึง dll
เมื่อฉันเพิ่มไฟล์. dll เป็นข้อมูลอ้างอิงในแอปพลิเคชัน C # มันแสดงข้อผิดพลาด: ไม่สามารถเพิ่มการอ้างอิงถึง ".... dll" ได้โปรดตรวจสอบให้แน่ใจว่าไฟล์สามารถเข้าถึงได้และเป็นแอสเซมบลีหรือคอมโพเนนต์ COM ที่ถูกต้อง ILDissassembler บอกว่าไม่มีส่วนหัว CLR ที่ถูกต้องดังนั้นฉันจึงพยายามลงทะเบียนโดยใช้ regsvr32 และนั่นทำให้ฉันมีข้อผิดพลาดอื่น: โหลดโมดูล "" แล้ว แต่การเรียกไปยัง DLLRegisterServer ล้มเหลวโดยมีรหัสข้อผิดพลาด "0x80004005" ฉันใช้ VS2010 รุ่น Ultimate บนเครื่อง 64 บิต Windows 7 อะไรคือปัญหา? ขอบคุณสำหรับคำแนะนำ / คำตอบ
95 .net  wcf  reference 

5
NET Remoting เลิกใช้งานจริงหรือไม่
ทุกคนพูดว่า. NET Remoting ถูกแทนที่ด้วย WCF ได้อย่างไร แต่ฉันสงสัยว่ามันถูกต้องแค่ไหน ฉันไม่เห็นคำที่เป็นทางการว่า Remoting กำลังเลิกใช้งานและดูเหมือนว่าสำหรับฉันแล้วมีสถานการณ์ที่ Remoting เหมาะสมกว่า WCF ไม่มีการเลิกใช้งานอ็อบเจ็กต์หรือเมธอดที่เกี่ยวข้องกับ Remoting แม้แต่ในเวอร์ชัน 4.0 ของเฟรมเวิร์ก ฉันเข้าใจเช่นกันว่า System.AddIn ในกรอบงาน 3.5 และ 4.0 ใช้ Remoting ใครมีคำพูดที่เป็นทางการในทางตรงกันข้าม? ในบทความการเลือกตัวเลือกการสื่อสารใน. NET (สำหรับ 3.0 ซึ่งเป็นเวอร์ชันล่าสุดของบทความนั้น) ระบุว่า: 8 การสื่อสารข้ามแอปพลิเคชันโดเมน หากคุณต้องการสนับสนุนการสื่อสารระหว่างออบเจ็กต์ในโดเมนแอปพลิเคชันต่างๆภายในกระบวนการเดียวกันคุณต้องใช้. NET remoting แน่นอนว่าตอนนี้ไม่ถูกต้องเนื่องจาก WCF สามารถใช้เพื่อข้ามขอบเขตของโดเมนแอปได้อย่างแน่นอน แต่จะให้คำแนะนำอย่างเป็นทางการสำหรับสถานการณ์นั้นหรือไม่? อัปเดต: ฉันส่ง Clemens Vasters (ซึ่งอยู่ในทีมที่เป็นเจ้าของ Remoting และ WCF) …
95 .net  wcf  remoting 

1
Visual Studio Wcf Test Client - ป้อน Int array
ฉันพบว่าไคลเอนต์ทดสอบ Visual Studio WCF มีประโยชน์มากเมื่อต้องทดสอบบริการ WCF ของฉันอย่างรวดเร็ว นี่คือไคลเอนต์ทดสอบที่พบในตำแหน่งนี้เทียบกับไดเร็กทอรีการติดตั้ง Visual Studio ของคุณ: \ Common7 \ IDE \ WcfTestClient.exe ฉันมีการเรียกใช้บริการสองสามรายการที่ต้องใช้พารามิเตอร์ประเภท System.Int32 [] ฉันคิดไม่ออกว่าจะป้อนค่าใดสำหรับพารามิเตอร์นี้เนื่องจากฉันได้รับข้อผิดพลาดอยู่เรื่อย ๆ "[ค่าที่ป้อน]" ไม่ใช่ค่าที่ถูกต้องสำหรับประเภทนี้ พยายามป้อนค่า 27 ฉันได้ลองทำสิ่งต่อไปนี้แล้ว แต่ทั้งหมดล้มเหลว 27 {27} System.Int32 ใหม่ [] {27} ใครก็ได้โปรดช่วยด้วยวิธีการทำเช่นนี้

6
เหตุใดนักพัฒนาจึงควรใช้บริการเว็บแทนการเชื่อมต่อโดยตรงกับฐานข้อมูล [ปิด]
ปิด . คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เน้นไปที่ปัญหาเดียวโดยแก้ไขโพสต์นี้เท่านั้น ปิดให้บริการใน5 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันกำลังมองหารายการ "สิบอันดับแรก" เหตุผลที่เราควรเชื่อมต่อกับฐานข้อมูลระยะไกลผ่านบริการเว็บแทนที่จะเชื่อมต่อโดยตรงกับฐานข้อมูล นี่เป็นการถกเถียงกันภายในตอนนี้และฉันเป็นผู้ให้บริการเว็บ แต่แพ้ข้อโต้แย้ง ฉันมีความเข้าใจพื้นฐานเกี่ยวกับบริการ WCF / เว็บไม่มีใครทำ เราสามารถทำอะไรก็ได้ที่ต้องการก้าวไปข้างหน้า แต่เราต้องยึดติดกับสิ่งที่เราเลือกตอนนี้ นี่คือสิ่งที่ฉันคิดขึ้นมา อีกไหม? บริการเว็บ WCF หากกำหนดค่าอย่างถูกต้องจะปลอดภัยมากขึ้น การเปลี่ยนแปลง DB จำเป็นต้องทำที่ระดับเซอร์วิสเท่านั้น (ไฟล์ config หรือรีคอมไพล์เซอร์วิส) เมื่อตั้งค่าและโฮสต์แล้วบริการบนเว็บจะใช้งานได้ง่ายขึ้น
94 wcf  web-services 

11
การตรวจสอบรายละเอียดข้อยกเว้นการหมดเวลาของ WCF
เรามีแอปพลิเคชันที่มีบริการ WCF (* .svc) ที่ทำงานบน IIS7 และลูกค้าหลายรายสอบถามบริการ เซิร์ฟเวอร์กำลังเรียกใช้ Win 2008 Server ไคลเอนต์กำลังเรียกใช้เซิร์ฟเวอร์ Windows 2008 Server หรือ Windows 2003 ฉันได้รับข้อยกเว้นดังต่อไปนี้ซึ่งในความเป็นจริงแล้วฉันได้เห็นว่าเกี่ยวข้องกับปัญหา WCF ที่อาจเกิดขึ้นจำนวนมาก System.TimeoutException: The request channel timed out while waiting for a reply after 00:00:59.9320000. Increase the timeout value passed to the call to Request or increase the SendTimeout value on …

4
WCF Service เพิ่มระยะหมดเวลาได้อย่างไร?
อาจดูเหมือนเป็นคำถามโง่ ๆ แต่ทุกอย่างใน WCF ดูเหมือนจะซับซ้อนกว่าใน asmx มากฉันจะเพิ่มระยะหมดเวลาของบริการ svc ได้อย่างไร นี่คือสิ่งที่ฉันมีจนถึงตอนนี้: <bindings> <basicHttpBinding> <binding name="IncreasedTimeout" openTimeout="12:00:00" receiveTimeout="12:00:00" closeTimeout="12:00:00" sendTimeout="12:00:00"> </binding> </basicHttpBinding> </bindings> จากนั้นจุดสิ้นสุดของฉันจะถูกแมปเช่นนี้: <endpoint address="" binding="basicHttpBinding" bindingConfiguration="IncreasedTimeout" contract="ServiceLibrary.IDownloads"> <identity> <dns value="localhost" /> </identity> </endpoint> ข้อผิดพลาดที่ฉันได้รับ: ช่องคำขอหมดเวลาระหว่างรอการตอบกลับหลัง 00: 00: 59.9990000 เพิ่มค่าการหมดเวลาที่ส่งไปยังการเรียกร้องขอหรือเพิ่มค่า SendTimeout บนการผูก เวลาที่กำหนดให้กับการดำเนินการนี้อาจเป็นส่วนหนึ่งของการหมดเวลาที่นานขึ้น ในไคลเอนต์การทดสอบ WCF มีไอคอนกำหนดค่าที่มีการกำหนดค่ารันไทม์ของบริการของฉัน: อย่างที่คุณเห็นมันไม่ใช่ค่าเดียวกับที่ฉันตั้งไว้? ผมทำอะไรผิดหรือเปล่า? <bindings> <basicHttpBinding> <binding …
94 wcf 

2
CORS - httprequest 'preflight' ทำอย่างไร?
ฉันกำลังพยายามส่งคำขอ HTTP ข้ามโดเมนไปยังบริการ WCF (ที่ฉันเป็นเจ้าของ) ฉันได้อ่านเทคนิคต่างๆในการทำงานกับข้อ จำกัด การเขียนสคริปต์ข้ามโดเมน เนื่องจากบริการของฉันต้องรองรับทั้งคำขอ GET และ POST ฉันจึงไม่สามารถติดตั้งแท็กสคริปต์แบบไดนามิกบางแท็กที่ src เป็น URL ของคำขอ GET เนื่องจากฉันมีอิสระที่จะทำการเปลี่ยนแปลงที่เซิร์ฟเวอร์ฉันจึงเริ่มพยายามใช้วิธีแก้ปัญหาที่เกี่ยวข้องกับการกำหนดค่าการตอบสนองของเซิร์ฟเวอร์เพื่อรวมส่วนหัว "Access-Control-Allow-Origin" และคำขอ "preflight" ด้วยและคำขอ OPTIONS ฉันได้แนวคิดจากโพสต์นี้: การทำให้ CORS ทำงานได้ ที่ฝั่งเซิร์ฟเวอร์วิธีการบนเว็บของฉันกำลังเพิ่ม 'Access-Control-Allow-Origin: *' ในการตอบสนอง HTTP ฉันเห็นว่าการตอบกลับรวมส่วนหัวนี้ไว้แล้ว คำถามของฉันคือฉันจะ 'กำหนดล่วงหน้า' คำขอ (OPTIONS) ได้อย่างไร? ฉันใช้ jQuery.getJSON เพื่อส่งคำขอ GET แต่เบราว์เซอร์ยกเลิกคำขอทันทีพร้อมกับสิ่งที่น่าอับอาย: จุดกำเนิดhttp: // localhostไม่ได้รับอนุญาตจาก Access-Control-Allow-Origin มีใครคุ้นเคยกับเทคนิค CORS …
94 javascript  wcf  jquery  cors 

4
WCF กับ ASP .Net Web API
ข้อดีข้อเสียของการใช้แต่ละเทคโนโลยีคืออะไร? ขณะนี้ WCF Web Api ได้รวมเข้ากับ Asp.net Asp.net web api รองรับการโฮสต์ด้วยตนเองแล้ว ฉันยังคงจินตนาการว่าหากฉันต้องการเปิดเผยสกีมาโปรโตคอลหลายตัวสำหรับการดำเนินการเดียวกันฉันจะยังคงเอนเอียงไปที่ WCF หรือจุดสิ้นสุด Mvc สามารถทำเช่นนี้ได้หรือไม่ API เว็บ Asp.Net ใหม่ยังแสดง Wsdl หรือไม่ หากไม่ลูกค้าจะทราบได้อย่างไรว่ามีการดำเนินการใดบ้าง คุณสมบัติที่ดีที่สุดของ Mvc คือ modelbinder ประสิทธิภาพเทียบเท่า WCF แค่ไหน? มีใครช่วยบอกหน่อยได้ไหมว่า api เว็บ Asp.net นำมาสู่ตารางได้เปรียบอย่างไร WCF ดูเหมือนจะเป็นทางเลือกที่ทรงพลัง / ปรับขนาดได้มากกว่า imo เกี่ยวกับสิ่งเดียวที่ Mvc Web Api มีเหนือรูปแบบ WCF อาจเป็นเรื่องง่ายในการพัฒนา แต่นั่นหมายถึงการหมอบหากมันเป็นข้อ จำกัด ในการออกแบบที่ร้ายแรง

7
ความปลอดภัยของเธรด MemoryCache จำเป็นต้องล็อคหรือไม่?
สำหรับผู้เริ่มต้นให้ฉันโยนมันออกไปที่นั่นฉันรู้ว่ารหัสด้านล่างไม่ปลอดภัยสำหรับเธรด (การแก้ไข: อาจจะ) สิ่งที่ฉันกำลังดิ้นรนคือการค้นหาการใช้งานที่เป็นจริงและเป็นสิ่งที่ฉันสามารถทำได้จริงภายใต้การทดสอบ ฉันกำลังปรับโครงสร้างโครงการ WCF ขนาดใหญ่ในขณะนี้ที่ต้องการข้อมูลแบบคงที่ (ส่วนใหญ่) แคชและสร้างจากฐานข้อมูล SQL จำเป็นต้องหมดอายุและ "รีเฟรช" อย่างน้อยวันละครั้งซึ่งเป็นสาเหตุที่ฉันใช้ MemoryCache ฉันรู้ว่ารหัสด้านล่างไม่ควรเป็นเธรดที่ปลอดภัย แต่ฉันไม่สามารถทำให้มันล้มเหลวภายใต้ภาระงานหนักและทำให้เรื่องซับซ้อนขึ้นการค้นหาของ Google จะแสดงการใช้งานทั้งสองวิธี (มีและไม่มีการล็อกรวมกับการอภิปรายว่าจำเป็นหรือไม่ ใครบางคนที่มีความรู้เกี่ยวกับ MemoryCache ในสภาพแวดล้อมแบบมัลติเธรดจะแจ้งให้ฉันทราบอย่างชัดเจนว่าฉันจำเป็นต้องล็อคตำแหน่งที่เหมาะสมหรือไม่เพื่อให้การเรียกเพื่อลบ (ซึ่งแทบจะไม่ถูกเรียก แต่เป็นข้อกำหนด) จะไม่ถูกโยนในระหว่างการเรียกค้น / การจัดตำแหน่งใหม่ public class MemoryCacheService : IMemoryCacheService { private const string PunctuationMapCacheKey = "punctuationMaps"; private static readonly ObjectCache Cache; private readonly IAdoNet _adoNet; static MemoryCacheService() …

6
เราสามารถสร้างรหัสสถานะ HTTP ที่กำหนดเองได้หรือไม่?
ฉันมีบริการ REST และ WCF และต้องการส่งรหัสสถานะที่กำหนดเองตามการดำเนินการ ตัวอย่างเมื่อการตรวจสอบความถูกต้องล้มเหลวฉันต้องการส่ง HTTP 444 และเมื่อการอนุญาตล้มเหลวฉันต้องการส่ง HTTP 455 คำถามคือเราจะตรวจสอบความถูกต้องสำหรับทั้ง SOAP และ REST web services ได้อย่างไร ในไคลเอนต์รหัสข้อผิดพลาดทำงานอย่างไรเนื่องจากเมื่อคุณส่ง HTTP 400/500 จากบริการ WCF (โดยใช้ SOAP) จะมีข้อยกเว้นเกิดขึ้นกับไคลเอ็นต์ที่แสดงรหัสสถานะ ตอนนี้ถ้าฉันส่งรหัสสถานะที่กำหนดเองใหม่ไคลเอนต์จะจัดการกับสิ่งนี้อย่างไร
92 c#  asp.net  wcf  http  wcf-rest 

16
บริการมีจุดสิ้นสุดของแอปพลิเคชันเป็นศูนย์ (ไม่ใช่โครงสร้างพื้นฐาน)
ฉันเพิ่งสร้างบริการ WCF (dll) และโฮสต์บริการ (exe) ฉันรู้ว่าบริการ WCF ของฉันทำงานอย่างถูกต้องเนื่องจากฉันสามารถเพิ่มบริการลงใน WcfTestClient ได้สำเร็จ อย่างไรก็ตามดูเหมือนว่าฉันกำลังประสบปัญหาเมื่อต้องใช้ WCF จากโฮสต์บริการ (exe) ฉันสามารถเพิ่มการอ้างอิงถึง WCF (dll) ให้กับโฮสต์บริการของฉัน (exe) และสร้างส่วนประกอบที่จำเป็นให้กับ exe เช่นตัวติดตั้งบริการโฮสต์บริการและ app.config คอมไพล์แล้วสุดท้ายติดตั้ง exe โดยใช้ InstallUtil แต่เมื่อฉันพยายามเริ่มบริการใน Microsoft Management Console บริการจะหยุดทันทีหลังจากเริ่มต้น ดังนั้นฉันจึงเริ่มตรวจสอบสิ่งที่อาจทำให้เกิดปัญหานี้และเกิดข้อผิดพลาดนี้จากบันทึกแอปพลิเคชันใน Event Viewer คำอธิบาย: ไม่สามารถเริ่มบริการได้ System.InvalidOperationException: Service 'Service' ไม่มีจุดสิ้นสุดของแอปพลิเคชัน (ไม่ใช่โครงสร้างพื้นฐาน) เป็นศูนย์ อาจเป็นเพราะไม่พบไฟล์คอนฟิกูเรชันสำหรับแอ็พพลิเคชันของคุณหรือเนื่องจากไม่พบองค์ประกอบเซอร์วิสที่ตรงกับชื่อเซอร์วิสในไฟล์คอนฟิกูเรชันหรือเนื่องจากไม่มีการกำหนดจุดสิ้นสุดในองค์ประกอบเซอร์วิส ข้อผิดพลาดนี้เกิดขึ้นจริงในOnStart; ของ exe ของฉันเมื่อฉันทำการโทรServiceHost.Open()นี้ ฉันเคยเห็นโพสต์มากมายที่มีบุคคลอื่นประสบปัญหานี้ แต่ส่วนใหญ่หากไม่ใช่ทั้งหมดอ้างว่าชื่อบริการหรือสัญญา …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.