【发布时间】:2019-05-27 22:01:32
【问题描述】:
创建了一个简单的 WCF 服务
界面:
using System.ServiceModel;
namespace AsyncCollectorAndWorker
{
[ServiceContract]
public interface IUsageLogger
{
[OperationContract]
void LogSearch(string term);
[OperationContract]
void LogSearchSuggestion(System.Guid id);
}
}
服务:
using System;
namespace AsyncCollectorAndWorker
{
public class UsageLogger : IUsageLogger
{
public void LogSearch(string term)
{
Console.WriteLine("{0} Search Term: '{1}'", DateTime.Now, term);
}
public void LogSearchSuggestion(Guid id)
{
Console.WriteLine("{0} Search Suggestion: '{1}'", DateTime.Now, id);
}
}
}
控制台应用程序来托管它:
host = new ServiceHost(typeof(MainService), new Uri(AutoMappedConfig.WcfHostAddress));
ServiceMetadataBehavior smb = new ServiceMetadataBehavior() { HttpGetEnabled = true };
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
host.Description.Behaviors.Add(smb);
host.Open();
Console.WriteLine($"Listeing on {AutoMappedConfig.WcfHostAddress}");
这很有效,如下所示:
但是打开 ?wsdl url 什么也没做。我以前做过这个,完全相同的设置,它只是工作。我不知道为什么不这样做。任何帮助表示赞赏。我检查了 Fiddler 以查看原始响应,但它只返回相同的响应(有和没有 WSDL)。
【问题讨论】:
-
如果您没有收到异常,则表明服务正在运行。你有另一个服务在机器上运行吗?您可能正在调用其他服务,但控制台写入没有响应。
-
不,这是特定的服务(请参阅命名响应)。必须添加一个 urlacl 等。此外,这台机器只有几天的历史,所以没有遗留的东西 :)
-
您是否在机器上安装了所有最新更新?
-
你的代码sn-ps可能有错误。请确保MainService是Usagelogger的别名,AutoMappedConfig.WcfHostAddress是uri格式字符串。