Tag: soap

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, […]

在web.config中编辑设置

我不知道如何标题这个问题 – 我正在向PayPal的Express Payment API提出请求。 我正在使用他们的dll来帮助发出请求并解析响应。 他们的代码工作说明是在web.config文件中添加授权凭据。 我已经这样做了。 我的问题是我希望能够编辑动态设置的这些凭据(可能来自SQL),因为我们将允许不同的用户输入他们的API凭据。 将请求发送到PayPal看起来像这样 Dim wrapper As New SetExpressCheckoutReq() wrapper.SetExpressCheckoutRequest = request Dim service As New PayPalAPIInterfaceServiceService() Dim setECResponse As SetExpressCheckoutResponseType = service.SetExpressCheckout(wrapper) 编辑请求标头的PayPalAPIInterfaceServiceService() ,因为PayPalAPIInterfaceServiceService()在其dll中定义,并根据web.config中的凭据应用自己的标头。 所以,我的问题是,当它在web.config查找时,有没有办法将web.config指向另一个位置? 我不确定这是可能的。 此外,有没有办法编辑在DLL中定义的请求的标头而不更改DLL(以保持pci兼容) 这是web.config中的行: 编辑: 我知道动态添加或编辑web.config是不好的,我正在寻找一种指向另一个可以编辑的位置的方法。 就像在C#代码中一样,您可以编写Settings[“string”]并指向web.config。 是否有一种方法可以在web.config中指向项目中的某个位置,并且可以动态更改此位置

为什么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 […]

用于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, […]

使用没有服务引用的HttpWebRequest动态使用Web服务

我工作的应用程序必须将数据发送到外部系统。 系统系统将有一个Web服务(c#或java或php),我需要使用它。 由于将有与客户端一样多的外部系统,我需要将WSDL文件,方法名称和参数作为用户输入并将数据发送到外部系统。 所以,我试图使用此处提供的代码动态调用Web服务 我在这里测试了很少的免费网络服务 我从WSDL文件中找到SOAP位置,方法名称和参数,并给出相同的输入。 以下服务按预期工作 http://soaptest.parasoft.com/calculator.wsdl Location – http://ws1.parasoft.com/glue/calculator Method Name – add Parameter – x,y 但是,当我通过提供SOAP位置和方法名称为另一个免费服务尝试相同时,它会抛出500内部服务器错误。 http://www.predic8.com:8080/crm/CustomerService?wsdl Location – http://www.predic8.com:8080/crm/CustomerService Method Name – getAll 我通过在soapUI中测试上面的wsdl来确认这些输入是正确的。 soapUI请求窗口中使用相同的位置。 我不确定为什么会抛出错误。 请帮我理解。 另请告诉我是否可以从WSDL文件获取服务位置并使用HttpWebRequest获取响应。 我担心这种调用Web服务的方法是否会起作用,而不管用于实现Web服务的技术如何。 编辑: 问题似乎与SOAP信封有关。 对于http://soaptest.parasoft.com/calculator.wsdl,即使我们忽略xmlns:cal =“http://www.parasoft.com/wsdl/calculator/,它也会成功执行。 但对于http://www.predic8.com:8080/crm/CustomerService?wsdl ,如果我忽略xmlns:ns =“http://predic8.com/wsdl/crm/CRMService/1/,则会引发内部服务器错误。 请分享我在这里如何通用

从Android KSoap2开始在Mono上运行WCF Soap Service

我正在开发一个Android / C#项目。 我需要做的是有一个WCF soap服务,可以在Windows或Linux(Mono)上运行。 它在Windows上工作正常,我可以从Visual Studio中提供的WCF测试客户端访问Mono上的WCF服务,它工作正常但是当使用KSOAP2访问android时,我收到错误HTTP Request Failed, HTTP status: 415 以下是soap服务的启动方式 string methodInfo = classDetails + MethodInfo.GetCurrentMethod().Name; try { if (Environment.GetEnvironmentVariable(“MONO_STRICT_MS_COMPLIANT”) != “yes”) { Environment.SetEnvironmentVariable(“MONO_STRICT_MS_COMPLIANT”, “yes”); } if (String.IsNullOrEmpty(soapServerUrl)) { string message = “Not starting Soap Server: URL or Port number is not set in config file”; library.logging(methodInfo, message); library.setAlarm(message, CommonTasks.AlarmStatus.Medium, methodInfo); return; […]

ServiceContractGenerator CodeDomProvider编译错误

我正在尝试使用ServiceCodeGenerator和CodeDomProvider来动态创建服务引用。 使用CodeDomProvider编译代码时,会抛出以下错误。 它看起来只适用于特定的Web服务。 我能够编译其他Web服务,但是这个会抛出下面的编译错误。 知道如何编辑源代码或忽略错误吗? CS0579:复制’System.CodeDom.Compiler.GeneratedCodeAttribute’属性99 CS0579:复制’System.Diagnostics.DebuggerStepThroughAttribute’属性101 CS0579:复制’System.CodeDom.Compiler.GeneratedCodeAttribute’属性191 CS0579:复制’System.Diagnostics.DebuggerStepThroughAttribute’属性193 代码如下: Uri address = new Uri(url + “?wsdl”); MetadataExchangeClientMode mexMode = MetadataExchangeClientMode.HttpGet; MetadataExchangeClient metadataExchangeClient = new MetadataExchangeClient(address, mexMode); metadataExchangeClient.ResolveMetadataReferences = true; //Trust all certificates System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true); ICredentials networkCredential = new NetworkCredential(“username”, “password”, “domain”); metadataExchangeClient.HttpCredentials = networkCredential; MetadataSet metadataSet = metadataExchangeClient.GetMetadata(); […]

使用Windows Phone 8发送SOAP请求

我有一个SOAP 1.1或1.2服务,我想用它来查询Windows Phone 8应用程序中的一些数据。 问题是,我对如何做到这一点没有丝毫的想法。 SOAP请求已经提供,我根本就不知道如何使用它。 我已经尝试过添加一个WebService但是我在黑暗中摸索,因为SOAP请求是从第三方提供的,很少或没有文档,很少或根本没有可能得到任何一个。 我已粘贴在下面的SOAP请求中。 我需要有关如何使用它的基本分步说明并从中得到某种响应。 POST /RTPIService.asmx HTTP/1.1 Host: rtpi.sample.servers.com Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: “http://testsite.com/GetRealTimeStopData” int boolean

使用带有WCF SOAP的XmlSerializer添加根xmlns

我有一个类文件,由我们的客户从第三方提供的XML Schema文档生成。 我应该能够将这个生成的类用于客户的SOAP Web服务,但是我遇到了一些问题。 我已经创建了一个ServiceContract接口,因此我可以使用WCF ChannelFactory连接到Web服务,如下所示: [ServiceContract(Namespace = “http://theircompany.co.uk/theirapp/v1”)] [XmlSerializerFormat] public interface IWebService { [OperationContract] EPSStatus serviceNotifyDataEventSet( [XmlElement(Namespace = “http://www.thirdparty.org/thirdapp”)] DataEventSet dataSet ); } EPSStatus和DataEventSet都在我生成的类文件中。 DataEventSet的重要部分: [System.CodeDom.Compiler.GeneratedCodeAttribute(“xsd”, “2.0.50727.42”)] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute(“code”)] [System.Xml.Serialization.XmlTypeAttribute(Namespace=”http://www.thirdparty.org/thirdapp”)] [System.Xml.Serialization.XmlRootAttribute(Namespace=”http://www.thirdparty.org/thirdapp”, IsNullable=false)] public partial class DataEventSet { //… } 当我现在尝试调用IWebService.serviceNotifyDataEventSet我得到以下SOAP主体(在其服务器上启用了WCF跟踪): 47245361157 141728877218 2012-06-28T10:07:57.218+01:00 OSACBM_TIME_MIMOSA 42 0 SITE_SPECIFIC 141728877218 2012-06-28T10:07:57.218+01:00 OSACBM_TIME_MIMOSA 所以,我能够调用Web服务,看起来好像我的数据正确序列化,但是在服务器端, dataSet会出现空值。 我也从一个与以下机构合作的客户端得到了一个跟踪: […]

为什么我得到这个XML块的org.xml.sax.SAXException?

我已经匿名了一点。 希望它不会减损有用的信息。 stringARRAY是我认为我被抛出的地方,但我不确定,所以如果我看错了地方,lemme就知道了。 来自WSDL 实际方法调用如下所示: string originalValue = “some useful value”; string[] usefulName1 = new[] { originalValue }; service.response[] responses = server.LongishOpName( usefulName1, someString1, someString2 ); 它会将这个XML生成到服务器(感谢Fiddler2): 114003 a string a string 我得到了这个回应 soapenv:Server.userException org.xml.sax.SAXException: Found character data inside an array element while deserializing SERVERNAME 我的肥皂消息真的出现了吗? (是的,我使用ASP.NET Web引用来完成所有提升,我不是手工生成) 我应该做些不同的事吗? 我只需要回家睡觉吗,明天一切都会“正常工作”?