Tag: wsdl

使用没有服务引用的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/,则会引发内部服务器错误。 请分享我在这里如何通用

.NET Web服务无法生成临时类

我正在尝试在我的.NET Web应用程序中实例化一个Web服务。 但是一旦遇到这条线: registerService register = new registerService(); 然后我收到以下错误: 无法生成临时类(result = 1)。 错误CS0030:无法将类型’Test.Website.ProxyTest.registerType []’转换为’Test.Website.ProxyTest.registerType’ 我没有写网络服务。 但这是否意味着Web服务在某处出现错误(在XSD或其他什么地方)? 这是否意味着第三方开发人员需要修复此Web服务?

通过WSDL创建动态SOAP客户端

我正在尝试转换此代码,在.net核心工作…此代码读取WSDL文件,并动态生成程序集(因为我有多个wsdl文件)。 但是这段代码不能在核心编译…因为我没有例如CSharpCodeProvider类。 谁知道更好的方法? private void Teste() { var ass = CriarAssemblie(wsdl); dynamic service = Activator.CreateInstance(ass.GetType(“Type1”)); } private Assembly CreateAssembly(Stream wsdlFile) { var serviceDescription = ServiceDescription.Read(wsdlFile); StringWriter strWriter = new StringWriter(CultureInfo.CurrentCulture); CSharpCodeProvider cProvider = new CSharpCodeProvider(); cProvider.GenerateCodeFromNamespace(GerarNameSpace(serviceDescription), strWriter, null); string codigoClasse = strWriter.ToString(); CompilerParameters parameters = new CompilerParameters(new string[] { “System.dll”, “System.Xml.dll”, “System.Web.Services.dll”, “System.Data.dll” }); parameters.GenerateExecutable […]

C#从Visual Studio中自动生成的Reference.cs获取XML SOAP响应

在使用.net 3.5的visual studio 2008中,我已经使用了自动生成Reference.cs的WSDL。 这是通过右键单击项目中的引用并选择“添加Web引用”来完成的 使用这个我可以发布到Web服务并通过我的ref和out对象获得有效的响应。 postValues()是一种void方法。 webService.postValues(ref value1, ref value2, out value3); 使用WireShark我可以在我的网络上看到请求和完整的soap响应。 我想弄清楚的是如何在我的代码中捕获这个原始的SOAP响应。 我想捕获这个用于记录目的,而不是单独序列化每个ref对象。 无论如何我无法在不修改自动生成的Reference.cs的情况下执行此操作。 任何帮助,将不胜感激。 编辑:似乎没有办法做到这一点,我可以看到。 其他人可以确认或否认吗? 编辑。 生病了再多一次,看看是否有人知道。

像在XSD中一样使用精确命名空间生成DataContracts

我们必须将我们的项目与后端Oracle平台集成。 这种集成是通过各种Web服务实现的。 我有所有这些集成的WSDL和XSD。 我需要从这些WSDL和XSD生成DataContracts。 现在的问题是,大多数这些集成共享一些常见的数据类型。 我想重复使用它们。 例如, Integration1: oracle / common / commonDataTypes.xsd oracle / integration1 / someXSD.xsd oracle / ebo / baseTypes.xsd Integration2: oracle / common / commonDataTypes.xsd oracle / integration2 / someXSD.xsd oracle / ebo / baseTypes.xsd Integration3: oracle / commonDataTypes.xsd oracle / integration2 / someXSD.xsd oracle / ebo / baseTypes.xsd 在这种情况下,我想在integration1和2之间重用oracle.common.CommonDataTypes。 到目前为止,我已经尝试了WSCF.blue和WSCF。 […]

如何根据需要指定OperationContract的参数

我想知道如何根据需要在WCF中指定OperationContract方法的参数,以便生成的xsd包含minOccurs =“1”而不是minOccurs =“0”。 例: [ServiceContract(Namespace = “http://myUrl.com”)] public interface IMyWebService { [OperationContract] string DoSomething(string param1, string param2, string param3); } 生成这个xsd: 但我想在代码中定义minOccurs =“1”而无需在xsd文件中手动修复它。

从文件目录添加WSDL文件

我有WSDL文件,我需要添加到我的项目作为Web引用。 它们位于我的本地目录中的.wsdl扩展名。 我从来没有像这样添加它们所以我不确定如何将它们添加为Web引用。 我找不到有用的东西。 有任何想法吗?

在C#Web Service的WSDL文件中使用主机名会感到困惑

我在部署在Windows服务EXE中的C#中创建了一个WCF Web服务,该服务基本上按照我想要的方式工作。 我以自托管的方式使用它(不在IIS中)。 为了使WSDL文件可用于调用Java Web服务,我将ServiceMetadataBehavior添加到主机创建中。 即: ServiceHost host = new ServiceHost(typeof(MyService)); ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); smb.HttpGetEnabled = true; host.Description.Behaviors.Add(smb); host.Open(); 这一切都运行正常,直到我将我的服务移动到具有不同主机名的另一台服务器。 当我连接到WSDL(http:// prod-server:55000 / MyService?wsdl)时,我看到开发服务器的主机名在WSDL中是硬编码的。 以下是浏览器中的WSDL片段: 我检查了项目中的所有C#代码,并且开发服务器名称没有在任何地方进行硬编码。 在App.config文件中,我定义了以下内容: 我希望这会导致localhost机器名被替换,但它仍然作为最初创建/部署服务的开发盒名称而存在。 我错了吗? 我还研究了显式指定WSDL文件路径的可能性,但从我可以推断出的内容来看,只有在IIS上托管服务时才能这样做。 最后,纯粹出于好奇,我想知道是否实际创建了一个实际的WSDL文件(我认为是磁盘上的物理文件)还是每次请求都动态呈现?

在为WCF服务生成类型时,.NET加载了寻找另一个版本的程序集

尝试在Visual Studio 2013中向ASP.NET Web应用程序添加服务引用时出现此错误。我在项目中引用了Microsoft.Owin.Security版本2.1.0.0。 但是我很沮丧他为什么要寻找2.0.1.0版本? 无法导入wsdl:portType详细信息:运行WSDL导入扩展时抛出exception:System.ServiceModel.Description.DataContractSerializerMessageContractImporter错误:无法加载文件或程序集’Microsoft.Owin.Security,Version = 2.0.1.0,Culture = neutral, PublicKeyToken = 31bf3856ad364e35’或其依赖项之一。 该系统找不到指定的文件。

无法在VS2010中使用WSDL

我试图在VS2010中使用以下WSDL并且我遇到了似乎特定于WSDL的错误。 我将其添加为Web服务引用,并且最初没有创建任何代理类或任何内容 – 向导成功完成,我在项目中的〜/ Web References /下获得了.wsdl和Reference.map文件,但是服务是代码不可用。 如果我在其上执行“更新Web引用”,则会收到以下错误: Custom tool error: Unable to import WebService/Schema. The element attribute is not allowed on encoded message parts. The erroneous part is named ‘textReturnObject’ in message ‘singleTextResponse’. (File: Reference.map line 1 column 1) 如果我尝试将“element”重命名为“type”,我会遇到一大堆其他问题: The custom tool ‘MSDiscoCodeGenerator’ failed. Cannot find definition for http://schemas.xmlsoap.org/wsdl/:exampleServiceNameBinding. Service Description with namespace […]