Tag: #wcf

在ASP.Net站点中使用AJAX调用时,REST WCF服务会锁定线程

我在ASP.Net站点中使用AJAX在页面中使用了WCF REST服务。 我希望能够从我的服务异步调用方法,这意味着我将在我的javascript代码中使用回调处理程序,并且当方法完成时,输出将被更新。 这些方法应该在不同的线程中运行,因为每个方法都需要不同的时间来完成它们的任务 我有代码半工作,但有些奇怪的事情正在发生,因为我第一次在编译后执行代码,它工作 , 在不同的线程中运行每个调用但后续调用blocs服务,以这种方式,每个方法调用具有等到最后一次通话结束才能执行下一次通话。 他们正在同一个线程上运行。 我在使用页面方法之前遇到了同样的问题,我通过禁用页面中的会话解决了这个问题,但我还没想到在使用WCF REST服务时如何做同样的事情 注意:方法完成时间(运行它们异步应该只需要7秒 ,结果应该是: Execute1 – Execute3 – Execute2 ) Execute1 – > 2秒 Execute2 – > 7秒 Execute3 – > 4秒 输出编译后 输出后续调用(这是问题) 我会发布代码……我会尽量简化它 服务合约 [ServiceContract( SessionMode = SessionMode.NotAllowed )] public interface IMyService { // I have other 3 methods like these: Execute2 and Execute3 [OperationContract] […]

提供的URI方案’http’无效; 预期’https’

我在IIS 6.0中托管了RESTful Web服务,我可以在浏览器中浏览服务。 当我尝试通过客户端控制台应用程序访问相同的服务时,它给我以下错误: “provided URI scheme’http’ is invalid; expected ‘https’, Parameter name: Via” 我的WebService web.config具有以下设置: 我的客户端应用程序有App.config从我获取地址: 在Main方法中: WebChannelFactory cf = new WebChannelFactory(baseAddress); WebHttpBinding wb =cf.Endpoint.Binding as WebHttpBinding; wb.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; wb.Security.Mode = WebHttpSecurityMode.Transport; cf.Credentials.UserName.UserName = “usermane”; cf.Credentials.UserName.Password = “password”; ITestAPI channel = cf.CreateChannel(); string msg = channel.TestMethod(); 当它试图调用TestMethod时,它给了我这个错误。

将exception冒泡到堆栈顶部是否可以?

是否可以让exception冒泡到堆栈顶部而不是在每个方法中捕获它?我们应该在任何情况下都这样做吗? .. 这种方法是否存在任何微妙的问题或副作用(例如,丢失exception细节,堆栈跟踪或内部exception细节等)? 虽然我的问题很笼统,但我目前的情况如下: 我正在将现有的WSE3 Web服务移动到WCF,因此y客户端是WSE3客户端。 我添加了一个行为,以便在WCF服务中发生FaultException它将被传递给客户端。 当OperationContract方法中存在exception时,我在客户端获得异​​常消息没有任何问题。 但是只要它出现在OperationContract以外的方法中,我就会以某种方式得到与安全相关的问题。 我无法确定确切的原因。 但是,作为一种解决方法,我想只从OperationContract抛出exception,并让exception冒泡到OperationContract 。

在C#中启动STAThread

我仍然是C#的新手,尤其是C#中的线程。 我正在尝试启动一个需要单线程单元的函数( STAThread ) 但我无法编译以下代码: 该函数在名为MyClass的单独类中如下所示: internal static string DoX(string n, string p) { // does some work here that requires STAThread } 我已经尝试了函数顶部的[STAThread]属性,但这不起作用。 所以我试图创建一个新的Thread如下: Thread t = new Thread(new ThreadStart(MyClass.DoX)); 但这不会编译(最好的重载方法有无效的参数错误)。 然而,在线示例非常相似(这里的示例)我做错了什么,我怎么能简单地在新的STA线程中运行一个函数? 谢谢

WCF返回ArrayOfKeyValueOfintstringKeyValueOfintstring 而不是List 和List instread of List

所以我花了最后几个小时调查这个问题,显然我不是唯一一个。 为什么我的词典和列表被作为数组返回? 我知道为了兼容性,Arrays被用作默认值。 WCF有意识地努力使自己远离.Net依赖。 但我的服务器和客户端都是用C#.Net开发的,所以我没事。 以下是仅针对StackOverflow的类似问题的示例: WCF服务返回数组而不是List 为什么WCF会像我期望的那样返回myObject []而不是List? WCF服务返回一个字典数组 WCF代理返回数组而不是列表甚至收集类型== Generic.List WCF返回数组而不是列表甚至收集类型== Generic.List 为什么我的WCF服务返回而ARRAY而不是List? 使用svcutil.exe生成的WCF服务代理中的数组而不是列表 我设置的内容: 我通过这个命令生成代理: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin>svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config /ct:System.Collections.Generic.List`1 http://192.168.0.99:9000/ProjectDatabase/?? 我的服务合同如下: [ServiceContract] public interface IMyContract { [OperationContract] [ServiceKnownType(typeof(Dictionary))] Dictionary getClassDictionary(); } 我的实施: public Dictionary getClassDictionary() { Dictionary myDict = new Dictionary(); myDict.Add(1, “Geometry”); myDict.Add(2, “Algebra”); myDict.Add(3, “Graph Theory”); […]

使用C#,WCF SOAP使用者使用WSSE纯文本身份validation?

我有一个WCF SOAP使用者,它由Visual Studio 2012从WSDL实现。 WSDL由PeopleTools生成。 基础对象的类型为System.ServiceModel.ClientBase 。 我需要SOAP请求类似于: [plain text username goes here] [plain text password goes here] Aren Cambre 这是我们最接近的: http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue urn:uuid:3cc3f2ca-c647-466c-b38b-f2423462c837 http://www.w3.org/2005/08/addressing/anonymous http://[internal URL to soap listener] http://schemas.xmlsoap.org/ws/2005/02/sc/sct http://schemas.xmlsoap.org/ws/2005/02/trust/Issue 256 FgMBAFoBAABWAwFQ9IhUFGUO6tCH+0baQ0n/3us//MMXzQA78Udm4xFj5gAAGAAvADUABQAKwBPAFMAJwAoAMgA4ABMABAEAABX/AQABAAAKAAYABAAXABgACwACAQA= 你会发现两个问题: 没有纯文本WSSE凭据。 传递服务不使用的二进制forms的凭据。 身份validation在Body ,而不是Header 。 该请求省略了InputParameters 。 这是必不可少的C#代码: var service = new ServiceWithBizarreNameFromPeoplesoft(); if (service.ClientCredentials == null) throw new NullReferenceException(); service.ClientCredentials.UserName.UserName […]

什么是REST?

可能重复: 我对REST的理解是什么? 什么是REST? 它与WCF有什么关系? 我被要求研究RESTful服务的实现。 能否请您指出对初学者有帮助的链接。 我是一名具有良好ASP.NET知识的.NET开发人员

在WCF数据服务中使用枚举

我正在尝试使用POCO数据模型手动构建WCF数据服务,我无法弄清楚如何正确公开enum值。 假设一个简单的模型,如: public class Order { public int ID {get; set;} public string Description {get; set;} public OrderStatus Status {get; set;} } public enum OrderStatus { New, InProcess, Complete } 如何通过OData WCF数据服务公开OrderStatus属性中的有价值信息? 如果不执行任何操作,则数据服务会生成运行时错误(枚举为无效属性)。 我见过的唯一解决错误的答案是将enum属性标记为已忽略,例如: [System.Data.Services.IgnoreProperties(“Status”)] public class Order … 这有效,但它会强制您从服务层“省略”有价值的信息。 是否有其他选项可以在WCF数据服务中使用枚举值? 编辑:请注意这是WCF数据服务 (aka Astoria)。 这不是原始WCF服务,在这种情况下答案更清楚。

WCF合同不匹配问题

我有一个客户端控制台应用程序与WCF服务通信,我收到以下错误:“服务器没有提供有意义的答复;这可能是由合同不匹配,过早的会话关闭或内部服务器错误引起的。” 我认为这是因为合同不匹配但我无法弄清楚原因。 该服务本身运行良好,两个部分一起工作,直到我添加了模拟代码。 任何人都可以看到有什么问题? 这是客户端,全部用代码完成: NetTcpBinding binding = new NetTcpBinding(); binding.Security.Mode = SecurityMode.Message; binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows; EndpointAddress endPoint = new EndpointAddress(new Uri(“net.tcp://serverName:9990/TestService1”)); ChannelFactory channel = new ChannelFactory(binding, endPoint); channel.Credentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation; IService1 service = channel.CreateChannel(); 这是WCF服务的配置文件:

WCF REST服务JSON发布数据

寻找有关wcf 4rest服务的一些指导,该服务基于VS2010中的WCF REST模板40(CS)扩展。 我花了最近几天试图让这个bug工作,审查其他post,而我已经接近,我似乎无法越过终点线。 经过多次挫折之后,终于点击了服务并发布了(使用fiddler请求构建器),但是方法参数是空的,但它在请求构建器中正确设置。 我猜这可能是配置问题,但随着截止日期的临近,我没有时间进行更多的研究。 FWIW,在调试中,jsonstring变量为null。 自我肯定是一个noob问题,因为这是第一次通过REST为我,任何帮助将不胜感激! 提前致谢。 web.config中 ‘ 的global.asax.cs public class Global : HttpApplication { void Application_Start(object sender, EventArgs e) { RegisterRoutes(); } private void RegisterRoutes() { RouteTable.Routes.Add(new ServiceRoute(“Scoring”, new WebServiceHostFactory(), typeof(ScoringSvc))); } } 服务代码 [ServiceContract] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] public class ScoringSvc { [OperationContract] [WebInvoke (Method = “POST”, BodyStyle […]