Размещение сервиса WCF внутри веб-проекта - PullRequest
5 голосов
/ 15 февраля 2011

Я пытаюсь создать службу wcf внутри веб-проекта c # mvc. Я добавил новый элемент типа «Служба WCF» и добавил метод тестирования в предоставленный интерфейс:

[ServiceContract]
public interface ITest
{
    [OperationContract]
    void DoWork();

    bool testWorking();
}

И предоставляемая услуга:

public class Test : ITest
{
    public void DoWork()
    {
    }

    public bool testWorking()
    {
        return true;
    }
}

А затем я перешел к файлу web.config и добавил следующее в тег system.ServiceModel:

 <services>
      <service name="Test" behaviorConfiguration="MyServiceTypeBehaviors">
        <endpoint address="" binding="wsHttpBinding" contract="ITest">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <endpoint address="mex"  binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyServiceTypeBehaviors" >
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

На данный момент, насколько я понимаю, я должен иметь возможность просмотреть это в браузере и получить тестовое сообщение о том, что пора внедрить клиент для использования этой службы. Однако в действительности мой браузер загружает файл .svc!

Два вопроса:

1) Какого черта я делаю не так? Почему я не вижу ожидаемого сообщения?

2) Можно ли каким-либо образом автоматически запустить средство тестирования WCF для запуска в этой службе? Единственные рекомендации, которые я могу найти, это начать с проекта WCF.

Обновление: (содержимое файла svc - взято из комментария)

<%@ ServiceHost Language="C#" Debug="true" 
    Service="myemployersaddress.com.Test" CodeBehind="Test.svc.cs" %> 

Ответы [ 2 ]

1 голос
/ 15 февраля 2011

Из того, что вы описали, с вами все должно быть в порядке, но так как вы не:

  1. Какой сервер вы используете? IIS, Кассини?
  2. Какое содержимое загруженного файла svc? (откройте его в блокноте)

Чтобы запустить инструмент тестирования из Visual Studio, щелкните правой кнопкой мыши файл .svc и выберите «Сделать стартовой страницей», а затем нажмите клавишу f5. Это должно открыть инструмент тестирования и позволит вам проверить ваш сервис. Это должно дать вам некоторые подсказки относительно того, в чем проблема.

0 голосов
/ 15 февраля 2011

Это звучит как проблема конфигурации веб-сервера;

  • помечено ли приложение как приложение в IIS (у него есть cog)? - должно
  • - это приложение, настроенное для использования правильной версии ASP.NET (т.е. не 1.x)
  • установлен ли на сервере .NET 3.0 или выше?
  • содержит ли основной файл фреймворка web.config сопоставления .svc?

последний, я видел сбой, когда установка вообще не затрагивает конфигурацию , если не совсем так, как она ожидала найти; поэтому, если вы вручную изменили основной файл web.config на сервере, вам может потребоваться применить изменения 3.0 вручную

например, в <buildProviders> у вас должно быть что-то вроде (для 3.0):

<add extension=".svc" type="System.ServiceModel.Activation.ServiceBuildProvider, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

в <httpHandlers> у вас должно быть что-то вроде (для 3.0):

<add path="*.svc" verb="*" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" validate="false"/>

и в <compilation>/<assemblies> должно быть множество дополнительных вещей, таких как:

<add assembly="System.Runtime.Serialization, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"/>
<add assembly="System.IdentityModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"/>
<add assembly="System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add assembly="System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add assembly="System.WorkflowServices, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

это только из быстрого сканирования - могут быть и другие, и точные значения могут меняться в зависимости от среды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...