код службы консоли хоста wcf для iis7?

#c# #wcf

#c# #wcf

Вопрос:

Я создал консольное приложение, в котором размещается служба… теперь я хочу воспользоваться сервисом и разместить его на iis7

Я создал файл .svc

настроил iis7

http://i.stack.imgur.com/Ehfhs.jpg

введите описание изображения здесь

весь скомпилированный код, который я поместил во внешний каталог :

http://i.stack.imgur.com/k0gAh.jpg

введите описание изображения здесь

и файл bin внутри папки кода приложения…

и это говорит
мне:http://i.stack.imgur.com/B3NKn.jpg

введите описание изображения здесь

чего мне не хватает?

Могу ли я преобразовать console hoster в iis hoster?

должен ли это быть веб-сайт в первую очередь?

должна ли служба также иметь конфигурацию (в моем консольном приложении этого не было — только у хостера) …..? p.s. как вы можете видеть, я клонировал конфигурацию здесь. (в каталог службы), а также в каталог вывода.

Ответ №1:

Проще всего было бы создать новый пустой ASP.NET приложение, к которому вы добавляете новую службу WCF. Затем просто замените сгенерированный код на код вашей службы.

Я думаю, причина, по которой ваш код не работает, заключается в том, что у вас есть ASP.NET веб-сайт (и не ASP.NET application) и в вашем файле .svc вы указываете только имя службы, но не кодовый файл, который ее содержит. Поскольку ASP.NET веб-сайт не скомпилирован, вам нужно указать это:

 <% @ServiceHost 
    Service="Service.Class1" 
    Debug="Debug"
    Language="C#" 
    CodeBehind="~/App_Code/Class1.cs"
%>
  

Также вы упоминаете какой-то файл bin внутри папки кода приложения. Если у вас есть какая-то предварительно скомпилированная служба в сборке, эта сборка должна находиться внутри папки ~/bin . В предварительно скомпилированном ASP.NET приложение у вас не должно быть никакой папки App_Code. На самом деле это 2 разных режима: приложение и веб-сайт. Вам решать, какой режим вы предпочитаете.

Комментарии:

1. У меня был свой консольный хостер. Я просто хочу преобразовать хост из консоли в iis ….. Это должно быть asp.net если я хочу разместить его на iis? не может ли он просто использовать службу?

2. @RoyiNamir, да, это должен быть ASP.NET применение. В IIS нет такой вещи, как сервис. Службы WCF размещаются в ASP.NET приложения в IIS. Но, как я уже сказал, я думаю, что вам не хватает директивы codebehind в вашем файле .svc, поскольку вы используете ASP.NET веб-сайт.

3. Я также добавил его раньше, а затем удалил обратно — все еще не работает. я думаю, это должно быть asp.net сайт с самого начала. итак, что все это значит?? это должен быть хост, а также сервисы,,,?

4. @RoyiNamir, WAS — это специальный модуль в IIS, который позволяет вам напрямую размещать службы WCF, использующие двоичные привязки, такие как, например, NetTcpBinding.

5. Итак, если на моей консоли размещена служба, которая является NetTcpBinding — должен ли я иметь возможность разместить ее на iis7? или, опять же, это должен быть asp.net веб-сайт, на котором размещен iis …?