服务工厂:路径/文件名过长的问题
我一直在尝试Service Factory,在长文件名超过Vista / XP中的限制方面遇到了一些问题。问题是,当从模型服务工厂生成代码时,所有内容都会以指定的名称空间作为前缀。使文件夹结构巨大。例如开始于
c:\ work \ sftest \ MyWebService
我在数据协定和服务接口中使用适当长度的名称创建每个模型。我将命名空间设置为MyCompany.SFTest.MyWebservice
生成代码后,我最终得到
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
在每个文件夹下是一个具有相同前缀的项目文件
c:\work\sftest\MyWebService\MyCompany.SFTest.MyWebService\Source\Service Interface\MyCompany.SFTest.MyWebService.ServiceImplementation\MyCompany.SFTest.MyWebService.ServiceImplementation.proj
由于Windows无法接受超过特定长度的文件名,因此会炸毁配方。
是否需要在每个文件夹名称中明确包含名称空间?
显然,在某些时候,我可能想将服务分支到另一个位置,但由于与上述相同的原因,可能无法。
有没有解决方法?
解决方案
回答
我不知道服务工厂,所以我不确定这是否有帮助。无论如何:也许从MSDN命名文件或者目录一文可以有所帮助。
Windows API具有路径的最大长度(MAX_PATH = 260)。如果要使用更长的路径名,则必须使用路径的前缀" \?"(即i)来使用API的Unicode版本。 e。使用
"" \?\ C:\ work \ sftest \ MyWebService \ MyCompany.SFTest.MyWebService \ Source \ Service Interface \ MyCompany.SFTest.MyWebService.ServiceImplementation \ MyCompany.SFTest.MyWebService.ServiceImplementation.proj"
代替
"" C:\ work \ sftest \ MyWebService \ MyCompany.SFTest.MyWebService \ Source \ Service接口\ MyCompany.SFTest.MyWebService.ServiceImplementation \ MyCompany.SFTest.MyWebService.ServiceImplementation.proj"
服务工厂是否允许该符号?
回答
我们确实遇到了这个问题,我们通过将服务工厂做成普通库(已经用WCF标记的)周围的非常薄的包装来解决了。这给了我们一个通常很深的项目(工厂),然后又给了一个惊人的深度包装工厂(没有提取接口和逻辑的全部内容)。
我们仍然有一些问题,但是主要是在客户端,我们的服务器在大多数情况下都没有问题。