Implantando o aplicativo Tutorial do WCF no IIS7: “O tipo não pôde ser encontrado”
Eu tenho tentado seguir issotutorial para implantar uma amostra do WCF no IIS. Eu não posso fazê-lo funcionar. Este é um site hospedado, mas eu tenho acesso do IIS Manager ao servidor. No entanto, na etapa 2 do tutorial, não consigo "criar um novo aplicativo IIS localizado fisicamente neste diretório de aplicativos". Não consigo encontrar um item de menu, item de menu de contexto ou o que não deve criar um novo aplicativo. Cliquei com o botão direito do mouse em todos os lugares como um louco e ainda não consigo descobrir como criar um novo aplicativo. Suponho que esse seja provavelmente o problema principal, mas tentei algumas outras coisas (descritas abaixo) para o caso de esse não ser o problema. Aqui está uma imagem do que vejo no Gerenciador do IIS, caso minhas palavras não façam justiça:
No add Application Here http://www.freeimagehosting.net/uploads/d6edbaaf3c.png
Isso é "implantado" emhttp://test.com.cws1.my-hosting-panel.com/IISHostedCalcService/Service.svc . O erro diz:
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.
Também tentei criar um diretório virtual (IISHostedCalc) no dotnetpanel que aponta para IISHostedCalcService. Quando eu navego parahttp://test.com.cws1.my-hosting-panel.com/IISHostedCalc/Service.svc , há um erro diferente:
This collection already contains an address with scheme http.
There can be at most one address per scheme in this collection.
Curiosamente, se eu clicar em Exibir aplicativos, parece que o diretório virtual é um aplicativo (veja a imagem abaixo) ... embora, conforme a mensagem de erro acima, ele não funcione.
Este aplicativo é ou não? http://www.freeimagehosting.net/uploads/f3230be046.png
Conforme o tutorial, não havia compilação envolvida; Acabei de soltar os arquivos no servidor da seguinte maneira, dentro da pasta IISHostedCalcService:
service.svc
Web.config
<dir: App_Code>
Service.cs
service.svc contém:
<%@ServiceHost language=c# Debug="true" Service="Microsoft.ServiceModel.Samples.CalculatorService"%>
(Tentei com aspas ao redor do atributo c #, pois isso parece um pouco estranho sem aspas, mas não fez diferença)
Web.config contém:
<?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>
Service.cs contém:
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;
}
}
}