Tag: #wcf

远程服务器返回错误:NotFound。 Silverlight + WCF

我试着打电话给网络服务几个小时。 我添加了clientaccesspolicy.xml: 和crossdomain.xml: 到我的网站的根目录。 从IIS调用Web服务,它在这里工作。 但是,当我试图从silverlight应用程序调用我的wcf Web服务时,我收到此错误: 远程服务器返回错误:NotFound。 这是来自Fiddler的日志: a:InternalServiceFault由于内部错误,服务器无法处理请求。 有关错误的更多信息,请在服务器上启用IncludeExceptionDetailInFaults(来自ServiceBehaviorAttribute或来自配置行为),以便将exception信息发送回客户端,或者根据Microsoft .NET Framework打开跟踪3.0 SDK文档并检查服务器跟踪日志。 这是代码,当我收到错误时: public int EndUserExist(System.IAsyncResult result) { object[] _args = new object[0]; int _result = ((int)(base.EndInvoke(“UserExist”, _args, result))); //Here return _result; } 我究竟做错了什么?

IIS上托管的WCF服务无法正常工作

我想构建一个公开basicHTTP端点和webHTTP端点的服务。 如果我在运行模式下用VS2010测试以下项目,一切都很好; 但我想在IIS(本地或远程)和测试通过主机服务。 Service.svc: 我将我的网站托管到本地IIS。 当我尝试: http://localhost/ContactLibrary2.0/Service.svc我得到: 无法找到“ContactLibrary.ContactLibraryService”类型,作为ServiceHost指令中的Service属性值提供,或者在配置元素system.serviceModel / serviceHostingEnvironment / serviceActivations中提供。 Web.config看起来像: IContact看起来像: [ServiceContract] public interface IContact { [OperationContract] [WebInvoke(Method = “GET”, UriTemplate = “GetContact/{idContact}”, ResponseFormat = WebMessageFormat.Json)] Contact GetContact(string idContact); [OperationContract] [WebInvoke(Method = “POST”, UriTemplate = “AddContact”, RequestFormat = WebMessageFormat.Json)] string AddContact(Contact contact); [OperationContract] [WebInvoke(Method = “POST”, UriTemplate = “EditContact”, RequestFormat = WebMessageFormat.Json, […]

无法创建类型’Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter,Common.Logging.Log4Net’

我在一个解决方案中有其他类库的WCF项目。 我使用nuget包管理器为需要记录的项目添加了Common.Logging。 我收到此错误: 无法创建类型’Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter,Common.Logging.Log4Net’ 当我执行时: Common.Logging.ILog logger = Common.Logging.LogManager.GetLogger(); logger.Error(“Test”); 我的Web.Config就在这里 编辑:Bin文件夹有Common.Logging.Log4net1213.dll以及log4net.dll

以编程方式获取命名管道的系统名称

我正在使用WCF NetNamedPipeBinding编写进程间通信。 我的目标是让服务在“net.pipe:// localhost / service”运行,所以我运行最简单的主机: host = new ServiceHost(contract, new Uri[] { “net.pipe://localhost” }); host.AddServiceEndpoint(typeof (IContract), new NetNamedPipeBinding(), “service”); host.Open(); 根据http://blogs.msdn.com/b/rodneyviana/archive/2011/03/22/named-pipes-in-wcf-are-named-but-not-by-you-and-how-to- find-the-actual-windows-object-name.aspx该名称隐藏在系统生成的guid后面。 这就是问题所在。 是否有任何可能的方法来获取系统(guid)在我的程序中生成的名称,所以我可以获得像“\ Device \ NamedPipe \ GUID”这样的路径,就像在procexp中一样,所以它会更容易嗅探它? (除了在单独的进程中运行sys internals可执行文件并解析其输出?)

解决方案将无法构建,因为它无法从服务生成类型转换为我的类型

我有一个WCF服务项目,可以很好地构建,生成一个可访问的WSDL,并且svcutil.exe不会产生任何错误。 我有一个“服务管理器”项目访问该Web服务,并且我已成功添加了服务参考ABCService。 第三个项目包含我需要来回传递的所有POCO对象 – 使用[DataContract]和[DataMember]属性进行大量装饰。 当我尝试构建解决方案时,我看到ABCService的Reference.cs有这样的方法( 为了简洁,我已经用完全命名空间代替(…) ): public (…).Thing SaveThing((…).Thing objThing) { return base.Channel.SaveThing(objThing); } public (…).myCollectionOfThing0mj5ZrAW GetThings() { return base.Channel.GetThings(); } 第一个返回单个Thing的方法工作正常 – 但是每个MyCollection方法都会出错: 错误16参数1:无法从’(…)。MyCollection ‘转换为’(…)。myCollectionOfThing0mj5ZrAW’ 我的集合类按照您的期望进行装饰: [CollectionDataContract] public class MyCollection : List where T : BaseType { // … } 我不知道为什么它会生成时髦的“myCollectionOfThing0mj5ZrAW”名称,或者为什么从一个到另一个的转换失败 编辑1:我尝试过使用 [CollectionDataContract(Name= “myCollection{0}”, ItemName = “{0}”)] 装饰我的集合类,我得到相同的错误,但更新的名称: 错误12参数1:无法从’(…)。myCollection ‘转换为’(…)。myCollectionThing’ 编辑2: 尽管检查了“引用程序集中的重用类型”,但选中了“指定引用程序集”的单选按钮,并选中了我的POCO程序集旁边的框: […]

使用WCF上传文件

我需要一个WCF服务来按用户上传大文件。 下面哪一项给出了更优化的性能 [OperationContract] public void UploadFile(Stream inputsreaam); 要么 [OperationContract] public void UploadFile(byte[] buffer); 欢迎任何其他建议

为什么wsa:WCF删除了我的回复邮件中的标题?

我有一个带有IDispatchMessageInspector的WCF服务和一个修改消息的WS-Addressing头的BeforeSendReply方法。 这适用于所有标题,除了wsa:To,它正从回复中删除… public void BeforeSendReply(ref Message reply, object correlationState) { reply.Headers.To = new Uri(“urn:something:something:something”); // Why won’t this show up in the response? reply.Headers.From = new EndpointAddress(“urn:blabla:blabla”); reply.Headers.MessageId = MessageIDHelper.CreateNew(); reply.Headers.ReplyTo = new EndpointAddress(Definitions.WSA_REPLYTO_ANONYMOUS); reply.Headers.Action = Definitions.WSA_ACTION_SOMETHING_SOMETHING; } 这导致: http://xxx.xx/xxx/Messages/1/Send SOME_ID_WHATEVER urn:xxx.xx:xxx:xxx urn:uuid:083b5fb7-ff45-4944-b881-b4c590577408 http://www.w3.org/2005/08/addressing/anonymous … 即使result.ToString() (result = Message type)给了我: http://xxx.xx/xxx/Messages/1/Send SOME_ID_WHATEVER urn:xxx.xx:xxx:xxx urn:xxx.xx:xxx:xxx urn:uuid:083b5fb7-ff45-4944-b881-b4c590577408 […]

WCF Web服务返回json格式数据

我创建了一个返回json格式数据的WCF Web服务。 我的代码如下: String sJSONdata = “”; StreamReader reader = new StreamReader(data); sJSONdata = reader.ReadToEnd(); //’now convert the JSON into a data table DataTable dt = GetJSONTable(sJSONdata); dt.TableName = “Customer”; Dictionary dict = new Dictionary(); foreach (DataRow rs in dt.Rows) { dict = new Dictionary(); foreach (DataColumn col in dt.Columns) { dict.Add(col.ColumnName, rs[col].ToString()); } } […]

用于SSRS和WCF测试的Soap请求的QUERY方法

我正在寻找一个很好的测试工具,用于制作Xml查询请求以及如何将它们与SOAP请求一起使用的知识,这些请求为SSRS返回xml。 我看到有些线程正在测试针对WCF服务的SOAP请求,这些服务推荐了一些产品,有人在codeplex上提到了“WebServiceStudio”: http ://webservicestudio.codeplex.com/。 问题是这个工具似乎无法直接制作’xml request’部分。 我不确定这个语法是否只是降级到SSRS或者是SOAP系列的一部分,所以我真的在寻找从哪里开始的建议,以及认为我只能在商业智能开发工作室中测试似乎有点疯狂,BIDS,本身。 到目前为止所做的一些背景: 我在.NET 4.5中使用C#中的Entity Framework 5在库项目中创建了一个实体模型,以使其与数据的模型部分保持隔离。 然后,我在网站WCF项目中创建了一个接口和实现,以使用basicHttpBinding作为其自己的项目来保持它与模型隔离。 我在Web站点项目中引用了Entity Project并返回了从t4模板生成的类(* .tt =就像我理解的POCO类生成器一样) 对于测试,我的返回实现如下,两个表返回,其中一个表在签名中有一个参数,一个表函数有两个参数是datetime: public List GetStatesTable() { using (SSRSReportsEntities re = new SSRSReportsEntities()) { return re.tblStates.ToList(); } } public List GetStateLike(string state) { using (SSRSReportsEntities re = new SSRSReportsEntities()) { return re.tblStates.Where(n => n.State.Contains(state)).ToList(); } } public List GetMonthlyData(DateTime aStart, […]

等待IO的可重用测试代码

我正在尝试在WCF公开的方法/服务上使用async / await。 一切正常,但我想模拟实际等待IO的服务方法,以便服务调用将注册到IO完成端口,并将线程放回线程池。 为了澄清,我只是在尝试确认IO完成端口的使用,并更好地理解实际发生的机制。 所以我的测试服务目前看起来像这样: [ServiceContract] public interface IHelloWorldService { [OperationContract] Task SayHello(string firstName, string lastName); } public class HelloWorldService : IHelloWorldService { public async Task SayHello(string firstName, string lastName) { string str = string.Format(“Hello {0} {1}”, firstName, lastName); return await Task.Factory.StartNew(() => str); } } 我想在SayHello()中做一些事情来使代码等待一些IO,理想情况下我可以复制/粘贴的代码模式通常在我想模拟等待IO时使用。 通常,Thread.Sleep()用于模拟长时间运行的任务,但我很确定这会使线程池线程进入hibernate状态而不会触发IO完成端口的使用。