VS 2010中的WCF端点地址

本文关键字:端点 地址 WCF 中的 2010 VS | 更新日期: 2023-09-27 18:16:36

我有一个简单的web服务。这是在使用VS 2010的网站中使用的。我在VS 2010中使用"添加服务引用"选项添加了服务引用。它工作得很好。它将服务地址打印为http://localhost:3187/Service1.svc/MyFolder。但是当我在浏览器中输入这个服务地址时,它显示HTTP Error 400.

注意:当我用service的end point中的address="MyFolder"替换address="MyFolder"时,http://localhost:3187/Service1.svc会显示结果。

我应该在浏览器中输入的正确地址是什么才能获得地址为"我的文件夹"的服务?

页面:

namespace ClientWebApp
{
  public partial class Default : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
        Service1Client myClientService = new Service1Client();
        Response.Write(myClientService.Endpoint.Address);
        string result = myClientService.GetData(7);
        lblName.Text = result;
    }
  }
}

合同:

namespace MyWCFServiceApplication
{
  [ServiceContract]
  public interface IService1
  {
    [OperationContract]
    string GetData(int value);
  }
  public class MyService : IService1
  {
    public string GetData(int value)
    {
        return string.Format("Now entered:  {0}", value);
    }
  }
}
配置:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="MyWCFServiceApplication.MyService"
               behaviorConfiguration="WeatherServiceBehavior">
        <endpoint address="MyFolder"
                  binding="wsHttpBinding"
                  contract="MyWCFServiceApplication.IService1" />
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="WeatherServiceBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="False"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

VS 2010中的WCF端点地址

请看一下这个问题的答案:WCF端点&绑定配置问题

:

当在IIS中托管WCF服务时,该服务的基址使用以下格式形成:{协议}://{主机}:{港口}/{applicationName}/{svcFileName}。这是您可以浏览该地址以获取WCF帮助页面和/或元数据(在默认配置上)。

生成端点的实际地址(客户端需要的地址)要使用),需要使用以下格式:{serviceBaseAddress}/{关注endpointAddress}

在您的情况下,{endpointAddress}MyFolder,这解释了为什么您可以使用http://localhost:3187/Service1.svc/MyFolder地址添加服务引用。然而,这不是你的帮助页面和元数据信息得到渲染的地址,所以你在http://.../*.svc/MyFolder上得到HTTP错误400的事实并不奇怪。

尝试添加"? "到您正在尝试使用的url的末尾。