Я сталкиваюсь с «интересной» ошибкой в моем веб-сервисе WCF JSONP. Это единственное, что у меня есть, и оно раскрывает только один метод. Если я обращаюсь к своему сервису через веб-браузер изнутри , появляется сообщение о том, что MEX фактически не включен (true). Если я нажму на нее из-за пределов нашей сети (как вы, если бы вы не были на машине в моей компании), она просто сядет и, наконец, истечет время ожидания. URL: http://demo.rivworks.com/services/Negotiate.svc. Есть идеи, что может быть причиной такого поведения?
Вот web.config:
<!-- WCF configuration -->
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="JsonpServiceBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="RivWorks.Web.Service.NegotiateService">
<endpoint address=""
binding="customBinding"
bindingConfiguration="jsonpBinding"
behaviorConfiguration="JsonpServiceBehavior"
contract="RivWorks.Web.Service.INegotiateService" />
</service>
</services>
<extensions>
<bindingElementExtensions>
<add name="jsonpMessageEncoding" type="RivWorks.Web.Service.JSONPBindingExtension, RivWorks.Web.Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</bindingElementExtensions>
</extensions>
<bindings>
<customBinding>
<binding name="jsonpBinding" >
<jsonpMessageEncoding />
<httpTransport manualAddressing="true"/>
</binding>
</customBinding>
</bindings>
</system.serviceModel>
</configuration>
Вот код:
namespace RivWorks.Web.Service
{
//----------------------------------------------------------------------------------------------------------//
// Data class //
//----------------------------------------------------------------------------------------------------------//
[DataContract(Name = "NegotiateSetup", Namespace = "http://rivworks.com/DataContracts/2009/01/15")]
public class NegotiateSetup : INegotiationInitialize
{
#region Declarations
...
#endregion
#region INegotiationInitialize Members
...
#endregion
}
//----------------------------------------------------------------------------------------------------------//
// Service Implementation //
//----------------------------------------------------------------------------------------------------------//
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class NegotiateService : INegotiateService
{
public NegotiateService() { }
public INegotiationInitialize GetSetup(string method, string jsonInput)
{
...
return resultSet;
}
}
}
Я здесь после пары вещей:
- Почему я могу НЕ поразить его снаружи моей локальной сети?
- Как мне заставить MEX работать нормально
Примечание: я использую классы JSONP, найденные здесь: http://msdn.microsoft.com/en-us/library/cc716898.aspx