Hosting von WCF-soap-und rest-Endpunkte nebeneinander

Ich geschrieben habe, einen Dienst, den ich möchte, setzen via rest und soap. Alles, was ich gelesen habe über WCF 4.0 sagt, ich muss mich nur setzen 2 Endpunkte mit unterschiedlichen Verhaltensweisen, dies zu tun. Aber ich kann nicht ankommen es zu wirken.

Hier ist mein service-Vertrag:

[ServiceContract]
public interface MyService
{
    [OperationContract]
    [WebGet(UriTemplate="data/{value}")]
    string GetData(string value);
}

Hier ist mein web.config:

<?xml version="1.0"?>
<configuration>

    <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>
    <system.serviceModel>

        <services>
            <service name="MyService">
                <endpoint name="mex" address="mex" binding="mexHttpBinding" contract="MyService"/>
                <endpoint address="rest" behaviorConfiguration="restBehavior" binding="webHttpBinding" contract="MyService" />
                <endpoint address="soap" behaviorConfiguration="soapBehavior" binding="basicHttpBinding" contract="MyService" />
            </service>
        </services>

        <behaviors>

            <serviceBehaviors>
                <behavior>
                    <serviceMetadata httpGetEnabled="true"/>
                    <serviceDebug includeExceptionDetailInFaults="true"/>
                </behavior>
            </serviceBehaviors>

            <endpointBehaviors>
                <behavior name="restBehavior">
                    <webHttp automaticFormatSelectionEnabled="true" helpEnabled="true" />
                </behavior>
                <behavior name="soapBehavior" />
            </endpointBehaviors>

        </behaviors>

        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>

    </system.serviceModel>

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>

</configuration>

Bin ich mit dem routing zu definieren, mein Dienst-url:

public class Global : System.Web.HttpApplication
    {
        protected void Application_Start(object sender, EventArgs e)
        {
            RouteTable.Routes.Add(new ServiceRoute("dns", new ServiceHostFactory(), typeof(MyService)));
        }
    }

Gibt es etwas, was mache ich hier falsch? Ich könnte wirklich etwas Hilfe gebrauchen.

Ich fand auch diese andere question/answer hilfreich.

InformationsquelleAutor Troy | 2010-07-29

Schreibe einen Kommentar