Я пытаюсь выполнить этот учебник для развертывания образца WCF в IIS. Я не могу заставить его работать. Это размещенный сайт, но у меня есть доступ диспетчера IIS к серверу. Однако на шаге 2 учебника я не могу "создать новое приложение IIS, физически находящееся в этом каталоге приложения". Кажется, я не могу найти элемент меню, элемент контекстного меню или что не создавать новое приложение. Я щелкнул правой кнопкой мыши везде, как сумасшедший, и до сих пор не могу понять, как создать новое приложение. Я полагаю, что это, вероятно, проблема с корнем, но я попробовал несколько других вещей (описанных ниже) на всякий случай, что на самом деле это не проблема. Вот картина того, что я вижу в диспетчере IIS, если мои слова не оправдывают этого:
Нет приложения здесь http://www.freeimagehosting.net/uploads/d6edbaaf3c.png
Это "развернуто" на http://test.com.cws1.my-hosting-panel.com/IISHostedCalcService/Service.svc. Ошибка говорит:
The type 'Microsoft.ServiceModel.Samples.CalculatorService',
provided as the Service attribute value in the ServiceHost directive,
or provided in the configuration element
system.serviceModel/serviceHostingEnvironment/serviceActivations
could not be found.
Я также попытался создать виртуальный каталог (IISHostedCalc) в dotnetpanel, который указывает на IISHostedCalcService. Когда я перехожу к http://test.com.cws1.my-hosting-panel.com/IISHostedCalc/Service.svc, возникает другая ошибка:
This collection already contains an address with scheme http.
There can be at most one address per scheme in this collection.
Интересно, что если я нажму "Просмотреть приложения", похоже, что виртуальный каталог - это приложение (см. рисунок ниже)... хотя, согласно сообщению об ошибке выше, оно не работает.
В соответствии с учебным руководством не было задействовано компиляция; Я просто удалил файлы на сервере, как описано в папке IISHostedCalcService:
service.svc
Web.config
<dir: App_Code>
Service.cs
service.svc содержит:
<%@ServiceHost language=c# Debug="true" Service="Microsoft.ServiceModel.Samples.CalculatorService"%>
(Я пытался использовать кавычки вокруг атрибута С#, так как это выглядит немного странно без кавычек, но это не имело значения)
Web.config содержит:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="Microsoft.ServiceModel.Samples.CalculatorService">
<!-- This endpoint is exposed at the base address provided by host: http://localhost/servicemodelsamples/service.svc -->
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- The mex endpoint is explosed at http://localhost/servicemodelsamples/service.svc/mex -->
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>
Сервис .cs содержит:
using System;
using System.ServiceModel;
namespace Microsoft.ServiceModel.Samples
{
[ServiceContract]
public interface ICalculator
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
}
public class CalculatorService : ICalculator
{
public double Add(double n1, double n2)
{
return n1 + n2;
}
public double Subtract(double n1, double n2)
{
return n1 - n2;
}
public double Multiply(double n1, double n2)
{
return n1 * n2;
}
public double Divide(double n1, double n2)
{
return n1 / n2;
}
}
}