Tag: #wcf

如何:在C#应用程序代码中禁用/启用WCF跟踪

我花了一段时间才能做到这一点,所以我决定分享一个解决方案,因为它可能会为其他人节省几天的反复试验。 问题:我希望能够在我的C#.NET应用程序中启用/禁用WCF跟踪并选择跟踪输出文件名。 我不希望用户编辑.config文件,那里有太多的错误空间。 这是一个解决方案。 应用程序的.config文件: 我的C#代码: using System; using System.IO; using System.Diagnostics; namespace MyNamespace { public class MyXmlListener : XmlWriterTraceListener { public static String TraceOutputFilename = String.Empty; public static Stream MakeOutputStream() { if (String.IsNullOrWhiteSpace(TraceOutputFilename)) return Stream.Null; return new FileStream(TraceOutputFilename, FileMode.Create); } public MyXmlListener () : base(MakeOutputStream()) { } } } 要启用WCF跟踪到文件,请在创建WCF对象之前设置TraceOutputFilename: MyXmlListener.TraceOutputFilename = “trace.svclog”; 我从这个论坛获得了很大的好处,我希望这篇文章付出代价! […]

使用URI和Da​​taContract类参数编写Web服务方法

如何获取Web服务方法来访问URI和复杂POST数据中的参数? 我有一个Web服务方法,在URI中有一些参数: “/api/{something}/{id}” 我还有一个标有DataContract / Member属性的类,我希望webservice方法接受它。 请注意,我的类包含一个也标有DataContract / Member属性的子类。 [DataContract] public class MoreData{ [DataMember] public string SomeString { get; set; } [DataMember] public SubClass SubData {get; set;} } 我的方法声明如下: [OperationContract] [WebInvoke( Method = “POST”, UriTemplate = “/api/{something}/{id}”)] public MyWebSvcRetObj Update(string something, string id) 如何让我的Update方法也接受MoreData类? 我已经能够编写如下方法: [OperationContract] [WebInvoke( Method = “POST”)] public MyWebSvcRetObj Update(MoreData IncomingData) 但只有当URI没有指定任何参数时,URI才会显示 […]

400错误请求exception:具有小数据的简单SOAP WCF服务

我有一个简单的WCF服务suing SOAP 。 我有一个非常简单的操作“GetMultiplied”,只有非常少量的数据。 当客户端尝试调用该操作时,我得到以下exception。 知道什么都可能是问题吗? 内部exception:{“远程服务器返回错误:(400)错误请求。”} 最后列出了完整的wsdl和schema。 注意:我已在服务和客户端配置中将配额值maxBufferSize等设置为更高的值。 追踪服务 当我在服务中使用跟踪(基于如何打开WCF跟踪? )时,我得到以下内容 – 似乎没有记录错误。 3 0 8 AppDomain unloading. 服务实施 public class CalculationService : ICalculationService { public virtual GetMultipliedResponse GetMultiplied(GetMultipliedRequest request) { MultipliedResult result = new MultipliedResult(); result.ResultNumber= ((request.InputNumber)*2); GetMultipliedResponse response = new GetMultipliedResponse(result); return response; } } 客户 static void Main(string[] args) { CalculationServiceInterfaceClient […]

entity framework自动加载

有没有办法让实体对象通过关系自动提取所有相关数据,而不是必须。包括我想要填充的所有内容? 我不能使用延迟加载,因为这需要序列化以通过WCF。 让它自动填充相关集合真是太棒了。

WCF Web服务的响应大小限制

我使用basicHttpBinding在IIS中托管WCF服务。 WCF Web服务使用ADO.Net查询后端SQL Server 2008,并将DataTable返回到WCF服务的客户端。 我发现当返回的DataTable很大时,会有exception表示http连接被IIS关闭。 任何想法有什么问题以及如何设置更大的响应大小? 另一个想法是对象的序列化大小是否有任何硬性限制(我想也许DataTable实例太大而不能序列化?) IIS返回的错误信息是: exception消息: 收到http://labmachine1/service.svc的HTTP响应时发生错误。 这可能是由于服务端点绑定不使用HTTP协议。 这也可能是由于服务器中止HTTP请求上下文(可能是由于服务关闭)。 请参阅服务器日志以获取更多详 {“底层连接已关闭:接收时发生意外错误。”} 这是我的服务器端的完整源代码,对于我在web.config中托管的服务器,默认值没有变化。 由于我在IIS中托管,我使用basicHttpBinding。 public class StudentManagement : IStudentManagement { public DataTable Poll(int Id) { return MakeParentTable(); } private DataTable MakeParentTable() { // Create a new DataTable. System.Data.DataTable table = new DataTable(“ParentTable”); // Declare variables for DataColumn and DataRow objects. DataColumn column; […]

使用单个控制台应用程序托管两个WCF服务

我试图使用一个控制台应用程序托管两个服务。 但是,当我尝试这样做时,只有一个服务被托管,而另一个服务没有。 Program.cs中: namespace WWWCFHost { class Program { static void Main(string[] args) { using (ServiceHost host = new ServiceHost(typeof(WWWCF.Login))) { host.Open(); Console.WriteLine(“Service1 Started”); } using (ServiceHost host1 = new ServiceHost(typeof(WWWCF.UserRegistration))) { host1.Open(); Console.WriteLine(“Service2 Started”); Console.ReadLine(); } } } } App.config中 在上面的代码中,我试图在端口8080上托管一个服务,而另一个在端口8090上托管。当我运行应用程序时,第一个服务启动然后自动关闭,第二个服务仍然启动。 如何同时托管这两项服务? 我已经浏览了这个链接: 两个WCF服务,托管在一个控制台应用程序中 我也经历过其他线索。但他们没有解决我的问题。 如果需要,将很乐意提供任何进一步的细节。

(413请求实体太大

我有WCF服务,当我想将参数作为大字符串传递时,我有一个方法(超过1mb) 我运行此wcf并在WCF测试客户端中更改了配置,如下所示: 当我尝试调用此方法时,我仍然有413请求实体太大。

计算对象增量

我正在开发一个客户端和服务器共享对象模型的应用程序,对象图可能变得相当大。 要将对象从客户端保存到服务器,理想情况下我只希望通过线路发送差异,以最大限度地减少网络流量。 我可以在服务器上提取原始对象图并将delta应用于它 想知道是否有任何工具或项目,或者是否有任何人有过做这样的事情的经验.. 非常感谢

如何在.NET 2.0中创建自定义集合

嗨,我想创建自定义集合,我从CollectionBase类派生我的自定义集合类,如下所示: public class MyCollection : System.Collectio.CollectionBase { MyCollection(){} public void Add(MyClass item) { this.List.Add(item); } } class MyClass { public string name; } 我来问几个问题: 当我在.NET 3.5框架上工作时,这种方法是否正确和新。 我想从我的Web服务(WCF)中公开这个集合。我该怎么做? 我必须实现GetEnumerator吗? 这是否会绑定到DataGridView。

WCF和IIS中的神秘问题?

你好 我写了WCF duplex service 。 此服务在Visual Studio中运行良好,但是当我发布此服务并将其放在IIS上时, Service don’t answer to any Client 。 所有客户端都正确连接到此服务。 他们也称服务井,没有例外。 这些服务(IIS服务和VS托管服务)之间只有不同之处。 例如 : * IIS服务地址是http://localhost/SmsService/SmsService.svc或更好的说是虚拟路径地址。 * VS托管服务地址为http:// localhost:1408 / SmsSrevice.svc 。 绝对I changed Server address for client’s. 这里服务/应用程序配置: VS托管服务 IIS托管服务 客户端配置 即使我在服务方法的第一个写入事件日志,但这是行不通的! 那有什么问题? 编辑1 首先,谢谢大家 我认为,我没有清楚地解释我的问题。 “这个服务工作在Visual Studio中很好”在VS中我指的是我可以通过客户端与服务器通信(在VS中与服务相同的解决方案)。 客户端可以调用服务,服务也可以调用客户端,工作正常(任何计算,回调,数据库动作等) 但是当我发布那个在VS中正确工作的服务时,进入不能正常工作的IIS(即使在我自己的计算机中)。 这意味着Client can create service object and connect to that […]