2016-05-27 2 views
0

Я создал службу, чтобы быть хозяином в SharePointСообщение с действием '' не может быть обработано в приемнике из-за несоответствия ContractFilter в EndpointDispatcher.

Вот SVC код позади:

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)] 
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] 
    public class MyService: IMyService 
    { 
     public bool AddNewItem(string id, string msg) 
     { 
      return true; 
     } 

     public string GetAllItems(string id) 
     { 
      return "test"; 
     } 
    } 

Вот интерфейс

[ServiceContract] 
interface IMyService 
{ 
    [OperationContract] 
    [WebGet(UriTemplate = "/GetAllItems/{id}", 
      ResponseFormat = WebMessageFormat.Json)] 
    string GetAllItems(string id); 

    [OperationContract] 
    [WebInvoke(Method = "POST", UriTemplate = "/AddNewItem", 
     RequestFormat = WebMessageFormat.Json, 
     ResponseFormat = WebMessageFormat.Json)] 
    bool AddNewItem(string id, string msg); 
} 

И вот web.config ВПВ:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.serviceModel> 
    <services> 
     <service behaviorConfiguration="MyService.ISAPI.ServiceBehaviour" name ="MyService.MyService"> 
     <endpoint address="" binding="webHttpBinding" 
        contract="MyService.ISAPI.IMyService"> 

     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 

     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name ="MyService.ISAPI.ServiceBehaviour"> 
      <serviceMetadata httpGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 
</configuration> 

Файл app.config:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name=""> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service name="MyService.MyService"> 
     <endpoint address="" binding="webHttpBinding" contract="MyService.ISAPI.IMyService"> 
      <identity> 
      <dns value="localhost" /> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8733/Design_Time_Addresses/MyService/MyService/" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    </system.serviceModel> 
</configuration> 

Когда я попытался получить доступ к SVC через браузер в этой ссылке www.mySharepoint.com/_vti_bin/MyService.svc/GetAllItems/1 происходит ниже ошибки:

Сообщение с действий «» не могут быть обработаны в приемнике, из-за ContractFilter несоответствие в EndpointDispatcher. Это может быть из-за несоответствия контракта (несоответствие действий между отправителем и получателем) или несоответствие привязки/безопасности между отправителем и приемником. Убедитесь, что отправитель и получатель имеют тот же договор и ту же привязку (включая требования безопасности, например, Сообщение, транспорт, нет).

В чем проблема?

Я думаю, что странно иметь app.config и web.config в одно и то же время, следует ли объединить конфигурацию в один?

ответ

0

я нашел ответ, я был потому, что я должен изменить web.config в Sharepoint вместо создания один в проекте.

В web.config в Sharepoint, я уточнила конечную точку

<service behaviorConfiguration="MyService.ISAPI.ServiceBehaviour" name ="MyService.MyService"> 
      <endpoint address="" binding="webHttpBinding" 
         contract="MyService.ISAPI.IMyService"> 

      </endpoint> 
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 

    </service> 

Теперь проблема решена

0

Назначает такое же значение, как и в конечной точке с параметром «пространство имен» атрибут ServiceContract от службы класса/интерфейса

Смежные вопросы