我正在尝试使用WCFTestClient测试我自己托管的wcf服务。我得到一个错误:
错误:无法从http://localhost:2303/MyService获取元数据如果这是您有权访问的Windows(R)Communication Foundation服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata上的MSDN文档.Exchange错误URI:http://localhost:2303/MyService元数据包含无法解析的引用:'http:// localhost:2303 / MyService'。内容类型application / soap + xml;服务http://localhost:2303/MyService不支持charset = utf-8。客户端和服务绑定可能不匹配。远程服务器返回错误:(415)无法处理消息,因为内容类型为'application / soap + xml; charset = utf-8'不是预期的类型'text / xml; charset = utf-8'.. HTTP GET错误URI:http://localhost:2303/MyService下载'http:// localhost:2303 / MyService'时出错。请求失败,HTTP状态为400:错误请求。
我的项目结构如下
这是我的服务实现和合同类,它们分为两个独立的项目。
namespace MyService
{
public class MyService : IMyService
{
public string GetGreeting(string name)
{
return "Hello " + name;
}
public string GetYelling(string name)
{
return "What the hell " + name + "!!";
}
}
}
namespace MyService
{
[ServiceContract]
public interface IMyService
{
[OperationContract]
string GetGreeting(string name);
[OperationContract]
string GetYelling(string name);
}
}
这是控制台应用
namespace MyWCFHost
{
class Program
{
static void Main(string[] args)
{
ServiceHost serviceHost = new ServiceHost(typeof(MyService.MyService), new Uri("http://localhost:2303"));
serviceHost.Open();
Console.WriteLine("MyService is running...");
Console.ReadKey();
serviceHost.Close();
}
}
}
这是配置文件
<configuration>
<system.serviceModel>
<services>
<service name ="MyService.MyService" behaviorConfiguration="MyService.MyServiceBehavior">
<endpoint address="http://localhost:2303/MyService" binding="basicHttpBinding" contract="MyService.IMyService"/>
<endpoint address="mex" binding="mexHttpBinding" name="mexpoint" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyService.MyServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
我做错了什么?
感谢您的时间......
修改
当我尝试通过winforms客户端运行它时服务工作,所以我知道服务正在运行。问题是如何使用WcfTestClient为测试做好准备。
答案 0 :(得分:3)
我怀疑您的MEX端点有问题。您目前只指定相对地址(“mex”) - 但您的服务中没有定义HTTP的基地址......
我建议:
OR:
因此,请将配置更改为:
<service name ="MyService.MyService" behaviorConfiguration="MyService.MyServiceBehavior">
<endpoint
address="http://localhost:2303/MyService"
binding="basicHttpBinding"
contract="MyService.IMyService"/>
<endpoint name="mexpoint"
address="http://localhost:2303/MyService/mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
然后我希望您能够获取元数据,从而连接到您的服务!
答案 1 :(得分:1)
您运行的是Windows 7吗?
尝试跑步:
netsh http add urlacl url=http://+:2303/MyService user=DOMAIN\user
答案 2 :(得分:0)
尝试以管理员身份运行Visual Studio。然后你不需要手动运行命令,如(url = http:// +:2303 / MyService user = PCNAME \ mylogin)