2008-09-17 49 views
1

Service Factory'u denedim ve uzun dosya adlarıyla ilgili bazı sorunlara yol açtım - Vista/XP'deki sınırı aştım. Sorun şu ki, hizmet fabrikasından kod oluştururken, belirtilen ad alanı ile her şeyi önekler. Klasör yapısını büyük yapmak.Hizmet fabrikası: son derece uzun yol/dosya adları sorunları

c başlayarak Örnek: iş \ sftest \ MyWebService

Veri sözleşme ve hizmeti arayüzünde adları orta uzunlukta olan modellerde her birini yaratmak \. Aynı önek

 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation\MyCompany.SFTest.MyWebService.ServiceImplementation.proj 

Bu bir proje dosyası Ben klasörlerin her Altında

 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Business Logic 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Resource Access 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.DataContracts 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.FaultContracts 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.MessageContracts 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceContracts 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation 
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Tests 

ile bitirmek kodu olduğunu oluşturduktan sonra

MyCompany.SFTest.MyWebservice

olmaya ad ayarlamak Pencereler, belirli bir uzunluğu aşan dosya isimlerini kabul edemediğinden reçeteyi havaya uçurur.

Kat adlarının her birine ad alanını açıkça dahil etmek gerekli midir? Açıkçası bir noktada bir servisi başka bir yere dayandırmak isteyebilirim, ancak yukarıdaki gibi aynı sebepten dolayı bunu yapmak mümkün olmayabilir. Bunun için bir çözüm var mı?

cevap

1

Hizmet Fabrikası'nı bilmiyorum, bu yüzden yardımcı olup olmayacağından emin değilim. Her neyse: belki MSDN'den Naming a File or Directory numaralı makale yardımcı olabilir.

Windows API, yollar için maksimum uzunluğa sahiptir (MAX_PATH = 260). Daha uzun yol adları kullanmak istiyorsanız, yollarınızı "\\? \", I ile önekleyerek API'nın Unicode sürümlerini kullanmanız gerekecektir. e. O notasyonu izin

"\\?\C:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation\MyCompany.SFTest.MyWebService.ServiceImplementation.proj"

yerine

"C:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation\MyCompany.SFTest.MyWebService.ServiceImplementation.proj"

mu Servis Fabrikası'nın kullanılır?

+1

Teşekkürler. Service Factory, herhangi bir kullanıcı etkileşimi olmaksızın kodu üretiyor; bu nedenle ben, dizin yapısını, çözüm oluşturduğum yerden başka bir şekilde değiştirmem ve sonra ad alanını belirttiğim zaman kullanmanın bir yolu yok. İsim alanımı bu tür problemler olmadan kullanabilmeyi istiyorum. – Xerx

1

Tam olarak bu problemi yaşadık ve servis fabrikamızı normal bir kütüphanenin etrafında (WCF ile işaretlenmiş) çok ince bir sarıcı yaparak yaptık. Bu bize normal bir derin proje (fabrika) ve daha sonra şaşırtıcı derecede derin bir sarıcı fabrikası verdi (tüm bu arayüz ve mantık ve ne yapmadan).

Yine de bazı sorunlarımız var - ama esas olarak istemci tarafında - sunucularımız çoğu zaman sorunsuz oluyor.

İlgili konular