使用js访问wcf自助服务主机

时间:2016-02-29 16:12:13

标签: javascript c# asp.net web-services wcf

我创建了一个wcf自助服务主机 我可以访问它,看到它是wsdl 但是当试图将/ js扩展名添加到路径时,我得到405错误。 我无法理解为什么,在使用asp.net web应用程序时也一样,它工作正常。

wcf class:

namespace A
{

    [ServiceBehavior(IncludeExceptionDetailInFaults=true)]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class Hello : IHello
    {

         public string SayHi()
        {
             return "Hiush !";
        }

    }

}

wcf interface:

namespace A
{

    [ServiceContract]
    public interface IHello

    {
        [OperationContract]
         string SayHi();
    }

}

wcf svc file:

<%@ ServiceHost Language="C#" Debug="true"  Service="A.Hello"   %>

自助服务主持人:

namespace SelfServiceHost
{

    class Program
    {

         static void Main(string[] args)
        {
             using (ServiceHost helloHost =  new ServiceHost(typeof(A.Hello)))
            {
                helloHost.Open();
                Console.WriteLine("HelloHost started @ " + DateTime.Now);
                Console.ReadKey();
            } 
        }

    }

}

自助服务主机app.config:

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true"/>
  </system.web>

  <!-- When deploying the service library project, the content of the config file must be added to the host's 
  app.config file. System.Configuration does not support config files for libraries. -->
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="" closeTimeout="00:01:00"
             openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
             allowCookies="false" bypassProxyOnLocal="true" hostNameComparisonMode="StrongWildcard"
             maxBufferSize="524288" maxBufferPoolSize="524288" maxReceivedMessageSize="524288"
             messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
             useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="524288" maxArrayLength="16384"
               maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <!--<security mode="TransportCredentialOnly">
            <transport clientCredentialType="Windows" proxyCredentialType="None"
                realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>-->
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service name="A.Hello">
        <endpoint address="PINCalc" behaviorConfiguration="AAA" 
                  binding="webHttpBinding" contract="A.IHello">
          <!--<identity>
            <dns value="localhost"/>
          </identity>-->
        </endpoint>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:3020/Hello.svc"/>
          </baseAddresses>
        </host>
        <!-- Service Endpoints -->
        <!-- Unless fully qualified, address is relative to base address supplied above -->
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults="True"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="AAA">
          <enableWebScript/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>  
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

0 个答案:

没有答案