仅当我在端点上使用相对地址时,才会收到 http 400 错误请求

本文关键字:http 请求 错误 端点 相对地址 | 更新日期: 2023-09-27 18:33:52

>我得到一个:

HTTP 400 错误请求

仅当我在端点上使用相对地址时才出错。

如果我从地址中删除"basic",我可以毫无问题地查看 WSDL 定义:

http://localhost:8001/Test/

但是一旦我添加"基本"并打开浏览器并输入:

http://localhost:8001/Test/basic

我收到错误。

这是我的配置:

<system.serviceModel>
    <services>
      <service name="HostConsole.ContactService" 
               behaviorConfiguration="ServiceBehavior" >
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8001/Test/"/>
          </baseAddresses>          
        </host>
        <endpoint address="basic" 
                  binding="basicHttpBinding" 
                  contract="HostConsole.IContactService">
        </endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

服务主机:

ServiceHost host = new ServiceHost(typeof(ContactService));
try {
    host.Open();
    foreach (ServiceEndpoint se in host.Description.Endpoints) {
        Console.WriteLine(string.Format(
            "Address: {0}",
            se.Address.Uri.AbsoluteUri));
    }
    Console.WriteLine("Enter to close");
    Console.ReadLine();
    host.Close();
}
catch (Exception ex) {
    host.Abort();
    Console.WriteLine(ex.Message);
    Console.ReadLine();
}

仅当我在端点上使用相对地址时,才会收到 http 400 错误请求

带有"basic"的地址字段位于完整服务 URL 之后。 我在这里没有看到单独的服务激活或您的 .svc 文件的名称,但它会像 http://localhost:8001/Test/YourService.svc/basic .