Я создал службу, чтобы быть хозяином в 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 в одно и то же время, следует ли объединить конфигурацию в один?