Search code examples
asp.net.netwcfiis-7wcf-binding

Method not allowed 405 when using IIS


I have the following WCF :

    [OperationContract]
    IList<OperationRoomDto> GetOperationRooms();

and I have a website that uses this WCF, when I use Visual studio (Asp.Net development server) it works fine, but when I deploy the WCF to IIS I get this exception:

The remote server returned an error: (405) Method Not Allowed.

I made a simple website to test this WCF (on IIS) and It worked.

this is a part of the website web.config file:

  <endpoint address="http://server/WcfService"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMessageService"
            contract="MyProject.Web.Wcf.IMessageService" name="BasicHttpBinding_IMessageService">
  </endpoint>

and this part of the web service config file:

  <system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="true" />
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

I tried to debug the w3wp.exe service to get any hidden exception,I put a break point at the web service methods, but the debugger didn't even reach there, and the exception happened before reaching to the web service class.


Solution

  • I figured out the problem, it was because the Url of the wcf is not correct, it misses the service file name

    <endpoint address="http://server/WcfService"
    

    it should become :

    <endpoint address="http://server/WcfService/Service.svc"