我目前使用Silverlight版本的svcutil来为Silverlight生成.cs文件。我希望能够与.NET 3.5分享,但似乎存在一些障碍。值得注意的是,ChannelBase似乎并不存在于.NET中,IHttpCookieContainerManager也不存在。是否有可能医生我的Service.cs,以便它们都可读? (我不喜欢使用.config文件。)如何为Silverlight和.NET生成WCF .cs文件?
2
A
回答
1
如果你不使用svcutil,你可以轻松地做到这一点。如果您的服务接口由Silverlight和.Net 3.5共享,则只需使用一些simple code即可在运行时创建客户端。
注意:由于Silverlight只支持异步通信,因此您需要创建两个略有不同的接口。或者,您可以使用相同的接口并使用#if SILVERLIGHT
来告知编译器在编译Silverlight代码时仅编译文件的一部分,并在编译.NET代码时编译该文件的另一部分。举个例子:
[ServiceContract(Namespace="http://www.example.com/main/2010/12/21")]
public interface IService
{
#if SILVERLIGHT
[OperationContract(AsyncPattern=true, Action = "http://www.example.com/HelloWorld", ReplyAction = "http://www.example.com/HelloWorldReply")]
IAsyncResult BeginHelloWorld(AsyncCallback callback, object state);
string EndHelloWorld(IAsyncResult result);
#else
[OperationContract(Action="http://www.example.com/HelloWorld", ReplyAction="http://www.example.com/HelloWorldReply")]
string HelloWorld();
#endif
}
这允许您使用Silverlight时,或者只是myClient.HelloWorld()使用.net 3.5时,将调用myClient.BeginHelloWorld()和myClient.EndHelloWorld()。
如果您有很多自定义绑定正在进行,您还可以创建一个继承自CustomBinding的类,并让该类在.NET和Silverlight之间共享。这样的类的一个例子:
public class MyServiceBinding : CustomBinding
{
public MyServiceBinding()
{
BinaryMessageEncodingBindingElement binaryEncodingElement = new BinaryMessageEncodingBindingElement();
#if !SILVERLIGHT
binaryEncodingElement.ReaderQuotas.MaxArrayLength = int.MaxValue;
#endif
Elements.Add(binaryEncodingElement);
Elements.Add(new HttpTransportBindingElement() { MaxReceivedMessageSize = int.MaxValue });
}
}
相关问题
- 1. 从xsd生成Cs文件
- 2. 如何在Silverlight WCF生成的服务中使用protobuf-net
- 3. 如何使用svcutil和xsd文件为WCF生成代码?
- 4. 控制Web必备如何从.cs文件生成d.ts文件
- 5. 如何分别使用.tt文件生成的.cs文件?
- 6. 如何让VC#重建自动生成的.cs文件?
- 7. 使用XSD生成CS文件生成更大的类
- 8. 如何在c#中写入.cs文件和/或如何将.txt更改为.cs
- 9. 将LinQ查询生成器转换为C#中的.cs文件
- 10. SIlverlight和WCF RIA
- 11. 在WCF和Silverlight中使用protobuf-net
- 12. 如何将SWIG生成的C#文件编译为.NET DLL?
- 13. 如何为特定的WSDL生成WCF
- 14. WCF REST:newb:IService1.cs,Service1.svc,Service1.cs
- 15. 如何从Silverlight中的“外部”.cs文件导航
- 16. 使用WCF和Ninject作为IoC/DI集成ASP.NET-MVC和Silverlight
- 17. 如何将源文件(.cs)添加到预生成事件中的资源(.resx)?
- 18. 调试时编辑.NET Core cs文件
- 19. 如何强制SilverLight在生成的代码文件夹中生成代码?
- 20. Android -.net WCF生成服务消耗
- 21. Silverlight 4和WCF
- 22. Silverlight wcf和ClientCredentials
- 23. Visual Studio - 生成后事件以合并.cs文件
- 24. Telerik网格事件没有生成CS文件
- 25. 从另一个CS文件
- 26. 如何为C源文件生成makefile
- 27. 如何为protobuf生成swift文件
- 28. 如何为DICOM文件生成SOPInstance UID?
- 29. 如何为JDownloader生成DLC文件?
- 30. 如何生成b3dm和pnts文件
为什么不在Visual Studio中为每个解决方案添加一个服务引用,并让VS为每个解决方案创建.cs文件。 – 2011-05-04 19:09:03