#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 …?