当我在浏览器中输入url时,自托管WCF服务不工作
本文关键字:WCF 服务 工作 浏览器 url 输入 | 更新日期: 2023-09-27 18:09:38
我是wcf的新手。我已经做了简单的自托管服务并添加了app.config
,但是当我在浏览器中输入地址时,它没有显示我们在创建服务http://localhost:8067/WCFService
时获得的服务页面,它没有显示服务,因为它显示了我们运行服务。但是当我尝试在public static void main
而不是app.config
中添加基础服务时,它工作得很好,我没有得到??有人能帮帮我吗?
以下是手动添加的app.config
文件:
<configuration>
<system.serviceModel>
<services>
<service name="SelfHostedWCFService.WCFService">
<endpoint
address="http://localhost:8067/WCFService"
binding="wsHttpBinding"
contract="SelfHostedWCFService.IWCFService">
</endpoint>
</service>
</services>
</system.serviceModel>
</configuration>
程序如下:
static void Main(string[] args)
{
ServiceHost host = new ServiceHost(typeof(SelfHostedWCFService.WCFService));
host.Open();
Console.WriteLine("Server is Running...............");
Console.ReadLine();
}
下面是手工添加的Interface文件:
namespace SelfHostedWCFService
{
[ServiceContract]
interface IWCFService
{
[OperationContract]
int Add(int a,int b);
[OperationContract]
int Sub(int a,int b);
[OperationContract]
int Mul(int a, int b);
}
}
以下是Service cs文件手工添加:
namespace SelfHostedWCFService
{
class WCFService : IWCFService
{
public int Add(int a, int b)
{
return (a + b);
}
public int Sub(int a, int b)
{
return (a-b);
}
public int Mul(int a, int b)
{
return (a*b);
}
}
}
我的app.config
或其他概念有问题吗??
您还需要将元端点添加到自托管服务中…
ServiceMetadataBehavior meta = new ServiceMetadataBehavior();
meta.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
_host.Description.Behaviors.Add(meta);
_host.AddServiceEndpoint(
ServiceMetadataBehavior.MexContractName,
MetadataExchangeBindings.CreateMexHttpBinding(),
"http://localhost:8067/WCFService/mex"
);
您应该尝试将System.ServiceModel.Web导入到您的Interface项目中,并为您的OperationContract(s)添加[WebGet]属性
界面如下所示:
using System.ServiceModel.Web;
namespace SelfHostedWCFService
{
[ServiceContract]
interface IWCFService
{
[OperationContract]
[WebGet]
int Add(int a,int b);
[OperationContract]
[WebGet]
int Sub(int a,int b);
[OperationContract]
[WebGet]
int Mul(int a, int b);
}
}