Tag: web services

如何序列化IList ?

我有一个返回IList的OR映射器(iBatis.Net)。 // IList QueryForList(string statementName, object parameterObject); var data = mapper.QueryForList(statement, parameters); 我试图在webservice中使用它想要以1:1的forms返回数据。 当然我不能在WebMethod中返回IList,因为它是一个接口,因此不可序列化。 我发现映射器确实返回了一个List。 但是我害怕将其转换为List,因为当然mappers的内部工作方式可能会在未来的版本中发生变化(而且它只是感觉很脏)。 我应该…… a) return new List(data); b) return (List)data; c) // your solution here 非常感谢!

反序列化Json对象 – DateTime

我的web-api返回一个用户对象。 在该对象中有一个DateTime属性。 当我在我的应用程序中读取它时,我得到一个错误,因为代表DateTime的字符串无效,它缺少\Date … {System.Runtime.Serialization.SerializationException:反序列化User类型的对象时出错。 DateTime内容’1984-10-02T01:00:00’不以’/ Date(’和以’)/’开头,如JSON所需。 —> public static async Task GetUser(string email) { try { using (HttpClient client = new HttpClient()) { HttpResponseMessage response = await client.GetAsync(url + “?email=”+email); if (response.IsSuccessStatusCode) { string content = await response.Content.ReadAsStringAsync(); User user = DataService.Deserialize(content); return user; } return null; } } catch (Exception ex) { return […]

WCF应用程序中的会话变量

我需要在我的WCF应用程序中使用或激发一个非常简单的会话对象。 我只需要在调用开始时存储一些值,我需要访问这些值,同时我会通过一些不同的服务方法。 Asp.NET会话非常适合用于此,因此我需要找出WCF应用程序上可用于存储此类值的内容。 注意:这只是一个每次通话会话,我不需要在从客户端到服务等的不同调用之间保留此会话。

如何在android中获取wcf服务的自定义消息头

我正在使用这个 – >> link << – 在wcf中设置自定义消息头的所有代码,但是我无法在android中获取这些头信息。 如果有人在Android中有任何经验。 如何在android中获取这些类型的自定义消息头值。 喜欢C#中的这段代码 public class SimpleCustomHeaderService : ISimpleCustomHeaderService { public string DoWork() { //Do Work //… //Capture Headers var userName = GetHeader(“web-user”, “ns”); var webNodeId = GetHeader(“web-node-id”, “ns”); var webSessionId = GetHeader(“web-session-id”, “ns”); Debug.WriteLine(“User: {0} / Node: {1} / Session: {2}”, userName, webNodeId, webSessionId); var s = string.Format(“HeaderInfo: […]

如何解释错误’客户发现’text / html’的响应内容类型

我正在使用C#并通过自动生成的C#代理对象连接到WebService。 我打电话的方法可以长时间运行,有时会超时。 我得到了不同的错误,有时我得到一个System.Net.WebException或一个System.Web.Services.Protocols.SoapException 。 这些exception具有我可以查询的属性,以查找特定类型的错误,我可以从中向用户显示人性化版本。 但有时我只是得到一个InvalidOperationException ,它有以下消息。 有没有什么方法可以解释这是什么,如果没有通过字符串挖掘我认识的东西,感觉非常脏,并且不是国际化不可知,错误信息可能会以不同的语言回来。 Client found response content type of ‘text/html; charset=utf-8’, but expected ‘text/xml’. The request failed with the error message: — Request timed out. body {font-family:”Verdana”;font-weight:normal;font-size: .7em;color:black;} p {font-family:”Verdana”;font-weight:normal;color:black;margin-top: -5px} b {font-family:”Verdana”;font-weight:bold;color:black;margin-top: -5px} H1 { font-family:”Verdana”;font-weight:normal;font-size:18pt;color:red } H2 { font-family:”Verdana”;font-weight:normal;font-size:14pt;color:maroon } pre {font-family:”Lucida Console”;font-size: .9em} .marker {font-weight: bold; color: […]

在.net中的SOAP信封中包装XML

我需要帮助将XML封装在第二方SOAP服务器的SOAP信封中。 第三方为入站请求和出站响应提供了xsd文件。 我已经使用xsd工具获取了这些XSD文件并创建了它们的C#类。 我的问题是我需要用SOAP信封包装序列化的请求,我不知道从哪里开始。 我正在查看Microsoft Web服务增强function3,但这表明它仅适用于.net 2.0和VS2005。 我正在使用VS2012和.net 4.5。 此外,我已经考虑通过Web服务连接到服务器,但它似乎不兼容, 并且没有WSDL 。 以下是SOAP服务器对入站请求的预期示例。 1 12345 这就是序列化XML字符串的样子。 1 12345 代码我用于我的网络请求和响应。 Byte[] byteArray = System.Text.UTF8Encoding.UTF8.GetBytes(data); WebRequest webRequest = WebRequest.Create(@”http://myserver:8888″); webRequest.ContentLength = byteArray.Length; webRequest.ContentType = @”text/xml; charset=utf-8″; webRequest.Headers.Add(“SOAPAction”, @”http://schemas.xmlsoap.org/soap/envelope/”); webRequest.Method = “POST”; Stream requestStream = webRequest.GetRequestStream(); requestStream.Write(byteArray, 0, byteArray.Length); requestStream.Close(); requestStream.Dispose(); WebResponse webResponse = webRequest.GetResponse(); Stream responseStream = […]

“System.Web.HttpContext无法序列化,因为它没有无参数构造函数。”

我创建了一个其他网站可以用来在我的数据库中存储错误的Web服务。 然后,他们可以访问我的网站查看他们的错误,搜索错误,过滤错误等。但是,我的Web服务出现以下错误: System.Web.HttpContext无法序列化,因为它没有无参数构造函数。 描述:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 exception详细信息:System.InvalidOperationException:System.Web.HttpContext无法序列化,因为它没有无参数构造函数。 Web服务包含以下function: [的WebMethod] public static void LogError(HttpContext context,Exception exception,string APIKey) { //记录错误 } 使用Web服务记录exception的外部站点在global.asax文件中包含以下代码: void Application_Error(object sender,EventArgs e){//当发生未处理的错误时运行的代码WebService.Errors.ErrorHandler.LogError(HttpContext.Current,Server.GetLastError(),“NOLDFHOI”); } 如何从网站上将HttpContext从他们的网站获取到我的function中?

在WCF REST服务中获取原始请求URL

我要在我的WCF rest webservice中检索原始请求URL。 现在我的代码看起来像这样: public class MyServiceAuthorizationManager : ServiceAuthorizationManager { protected override bool CheckAccessCore(OperationContext operationContext) { base.CheckAccessCore(operationContext); var url = operationContext.IncomingMessageProperties.Via.OriginalString; … web.config中 如果我的原始url是 http://192.168.1.100:8081/test 这段代码返回 HTTP://主机名:8081 /测试 有没有办法检索确切的原始请求url? 注意 我在web.config中找到了关于cutomize“baseAddress”标签的post,但是我的扩展名webservice没有特定的端点,我不想添加它。 我不知道是否有办法在没有端点的情况下做到这一点。 我发现这篇文章https://stackoverflow.com/a/5915713/735864与System.Net.HttpRequestHeader.Host一起播放,但是端口号不起作用! 我知道我可以解析提供的URL并进行替换但是……我不认为这是实现此目的的最佳实践。

我可以序列化数据表或数据集以通过C#中的Web服务进行传输吗?

我正在使用Web服务来查询表中的数据。 然后我必须将它发送给想要它作为DataTable的用户。 我可以序列化数据吗? 或者我应该将其作为A DataSet发送。 我是Web Services的新手,所以我不确定最好的方法。

是否可以创建部署为EXE或Windows服务的独立C#Web服务?

是否可以创建可以处理Web服务请求的C#EXE或Windows服务? 显然,某种嵌入式,可能有限的Web服务器必须是EXE /服务的一部分。 EXE /服务不必依赖于安装IIS。 优选地,嵌入式Web服务可以处理HTTPS / SSL类型连接。 场景是这样的:客户想要在他们的公司机器上安装一个小代理(Windows服务)。 代理将有两个主要任务:1)随着时间的推移监视系统并收集某些数据,以及2)响应Web服务请求(SOAP -v-REST仍然被讨价还价)以进行数据收集或系统更改。 客户喜欢Web服务API的概念,因此可以编写任意数量的客户端(使用任何语言)来访问公司计算机上运行的各种代理。 他们希望安装相对轻松(安装.NET,某些程序集,服务,修改Windows防火墙,启动服务),而无需安装和配置IIS。 我知道我可以用Delphi做到这一点。 但是如果可能的话,客户更愿意在C#中完成这项工作。 有什么建议?