Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ServiceStack:VS 2012添加服务引用_C#_Soap_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">servicestack - Fatal编程技术网 servicestack,C#,Soap,servicestack" /> servicestack,C#,Soap,servicestack" />

C# ServiceStack:VS 2012添加服务引用

C# ServiceStack:VS 2012添加服务引用,c#,soap,servicestack,C#,Soap,servicestack,向soap端点添加服务引用时遇到问题。我甚至尝试在SS网站上添加hello示例的地址,但无法生成wsdl。我的所有DTO(在我的项目上)都装饰有数据合同/成员。我还将程序集更改为指向目标命名空间。我尝试将其添加为web引用,并在引用程序集中标记重用类型,但仍然没有成功。有什么事我忘了做吗?如果需要更多信息,请告诉我 using ServiceStack; using System; using System.Collections.Generic; using System.Linq; usin

向soap端点添加服务引用时遇到问题。我甚至尝试在SS网站上添加hello示例的地址,但无法生成wsdl。我的所有DTO(在我的项目上)都装饰有数据合同/成员。我还将程序集更改为指向目标命名空间。我尝试将其添加为web引用,并在引用程序集中标记重用类型,但仍然没有成功。有什么事我忘了做吗?如果需要更多信息,请告诉我

using ServiceStack;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WILP_API
{
    public class ApplicationHost : AppHostBase
    {
        public ApplicationHost() : base("GreetingService", typeof(GreetingService).Assembly) { }

        public override void Configure(Funq.Container container)
        {
            //throw new NotImplementedException();
        }
    }
}​
使用ServiceStack;
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用System.Runtime.Serialization;
使用System.Web;
名称空间WILP_API
{
[路由(“/hello/{Name}”,“GET”)]
[DataContract(Namespace=“WILP_API”)]
公共类迎宾请求
{
[数据成员]
公共字符串名称{get;set;}
}
}
使用ServiceStack;
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用System.Runtime.Serialization;
使用System.Web;
名称空间WILP_API
{
[路由(“/hello/{Name}”,“GET”)]
[DataContract(Namespace=“WILP_API”)]
公共班级迎宾回应
{
[数据成员]
公共字符串结果{get;set;}
}
}​
使用ServiceStack;
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
名称空间WILP_API
{
公务舱迎宾服务:IService
{
公共问候响应任意(问候请求请求)
{
GreetingResponse=新的GreetingResponse();
response.Result=“你好,”+request.Name+“!”;
返回响应;
}
}
}​
使用系统反射;
使用System.Runtime.CompilerServices;
使用System.Runtime.InteropServices;
使用System.Runtime.Serialization;
//有关部件的一般信息通过以下方式控制
//属性集。更改这些属性值以修改信息
//与程序集关联的。
[汇编:汇编标题(“WILP_API”)]
[组装:组装说明(“”)]
[程序集:程序集配置(“”)]
[大会:大会公司(“)]
[组装:组装产品(“WILP_API”)]
[大会:大会版权所有(“版权©2015”)]
[组装:组装商标(“”)]
[大会:大会文化(“”)
//将ComVisible设置为false会使此程序集中的类型不可见
//到COM组件。如果需要从访问此程序集中的类型
//COM,将该类型的ComVisible属性设置为true。
[大会:ComVisible(false)]
//如果此项目向COM公开,则以下GUID用于typelib的ID
[组件:Guid(“133BB3E-442d-45ad-9cc2-02fbcd50c8ac”)]
//程序集的版本信息由以下四个值组成:
//
//主要版本
//次要版本
//建筑编号
//修改
//
//可以指定所有值,也可以默认版本号和内部版本号
//通过使用如下所示的“*”:
[汇编:汇编版本(“1.0.0.0”)]
[程序集:AssemblyFileVersion(“1.0.0.0”)]
[程序集:ContractNamespace(“http://schemas.servicestack.net/types",
ClrNamespace=“WILP_API”)]
[程序集:ContractNamespace(“http://schemas.servicestack.net/types“,ClrNamespace=“ServiceStack”)]
[程序集:ContractNamespace(“http://schemas.servicestack.net/types,ClrNamespace=“ServiceStack.Client”)]​
错误:

错误5自定义工具错误:无法为服务生成代码 参考“ServiceReference3”。请检查其他错误和警告 有关详细信息,请发送消息

警告3自定义工具警告:无法导入wsdl:绑定详细信息: 导入wsdl:binding所在的wsdl:portType时出错 依赖于。wsdl的XPath:portType: //wsdl:definitions[@targetNamespace='']/wsdl:portType[@name='ISyncReply'] XPath到错误源: //wsdl:definitions[@targetNamespace='']/wsdl:binding[@name='BasicHttpBinding_ISyncReply']

警告4自定义工具警告:无法导入wsdl:端口详细信息:存在 导入wsdl:端口依赖的wsdl:绑定时出错 在…上XPath到wsdl:绑定: //wsdl:definitions[@targetNamespace='']/wsdl:binding[@name='BasicHttpBinding_ISyncReply'] XPath到错误源: //wsdl:definitions[@targetNamespace='']/wsdl:service[@name='SyncReply']/wsdl:port[@name='BasicHttpBinding_ISyncReply']

警告2自定义工具警告:无法导入wsdl:portType详细信息:错误 运行WSDL导入扩展时引发异常: System.ServiceModel.Description.DataContractSerializerMessageCompactImporter 错误:加载提供的XSD文档时出现问题:a 对名为“GreetingRequest”的架构元素的引用,以及 未能找到命名空间“” 已解析,因为在中找不到元素定义 targetNamespace“”的架构。 请检查提供的XSD文档,然后重试。XPath到错误 资料来源: //wsdl:definitions[@targetNamespace='']/wsdl:portType[@name='ISyncReply']


您应该确保所有DTO仅使用a。由于ServiceStack内置DTO已经用
http://schemas.servicestack.net/types
这是最简单的方法,建议您只需在
assembly.cs
中添加assembly
[ContractNamespace]
属性即可,例如:

[assembly: ContractNamespace("http://schemas.servicestack.net/types",
           ClrNamespace = "WILP_API")]
这将应用于
WILP_API
命名空间下该程序集中的所有DTO,因此它们不再需要在DTO上定义命名空间,例如:

[Route("/hello/{Name}","GET")]
[DataContract]
public class Greeting : IReturn<GreetingResponse>
{
    [DataMember]
    public string Name { get; set; }
}

[DataContract]
public class GreetingResponse
{
    [DataMember]
    public string Result { get; set; }
}

而不是使用SOAP端点和WSDL,而是应该考虑使用多个提供。

< P>我最近确实经历了这个,并且我想具体地扩展上面的答案。事实证明,在我的案例中,100%与使用的命名约定有关

当SS生成wsdl时,推荐的命名约定在一定程度上得到了实施。我不确定
SetConfig(new HostConfig {
    WsdlServiceNamespace = "http://new.namespace.com",
});