Creé un proyecto como una Biblioteca de clases. Ahora necesito convertirlo en WCF. Puedo crear un proyecto WCF, pero me gustaría evitar todo ese alboroto con TFS. He realizado el App.config y he agregado la línea /client:"wcfTestClient.exe "a los argumentos de la línea de Comando. Pero parece que falta algo más en el lanzamiento del Hosting.¿Qué pasos debo seguir para convertir una biblioteca de clases a WCF?
Respuesta
WCF is not dot net. Para crear una aplicación WCF que tiene que hacer cuatro cosas
- Definir un contrato de servicio
- Implementar el contrato en el lado del servidor
- Anfitrión su servicio implementado
- crear un cliente que también se puede utilizar el servicio contrato
echar un vistazo a este tutorial
Thi s es un ejemplo completo de un servicio y su huésped
using System.ServiceModel;
using System.ServiceModel.Description;
using System.Runtime.Serialization;
using System;
[ServiceContract]
public interface AddStuff
{
[OperationContract]
int Add(int X,int Y);
}
public class opAddStuff : AddStuff
{
public int Add(int X, int Y)
{
return X + Y;
}
}
public class Pgm
{
static void Main(string[] args)
{
string httpAddr = "http://127.0.0.1:6001/AddStuff";
string netAddr= "net.tcp://127.0.0.1:5001/AddStuff";
System.ServiceModel.ServiceHost SH = new ServiceHost(typeof(opAddStuff),new Uri(httpAddr));
BasicHttpBinding B = new BasicHttpBinding();
NetTcpBinding NB = new NetTcpBinding();
SH.AddServiceEndpoint(typeof(AddStuff), B, httpAddr);
SH.AddServiceEndpoint(typeof(AddStuff), NB, netAddr);
System.ServiceModel.Description.ServiceMetadataBehavior smb = SH.Description.Behaviors.Find<ServiceMetadataBehavior>();
// If not, add one
if (smb == null)
smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
SH.Description.Behaviors.Add(smb);
SH.AddServiceEndpoint( ServiceMetadataBehavior.MexContractName, MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
SH.Open();
Console.WriteLine("Service at your service");
string crap = Console.ReadLine();
}
}
También tiene que ejecutar este comando
http netsh añadir url urlacl = http://+:6001/AddStuff user = dominio \ usuario
algo de esto proviene de here
he descubierto lo siguiente haciendo lo contrario a lo que usted está tratando de lograr, es decir, el cambio de una biblioteca servicio a una aplicación de consola ..
algunas de las configuraciones en los archivos csproj no se pueden editar desde la pantalla de configuración desde VS para convertir una biblioteca de clases en una biblioteca de servicios WCF. Debe agregar lo siguiente a su archivo de proyecto
Agregue lo siguiente a la primera PropertyGroup
[estos son los GUID para un proyecto de C# WCF]
<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
ver aquí para más información sobre ProjectTypeGuids
también puede ser necesario añadir la siguiente línea inmediatamente a continuación:
<StartArguments>/client:"WcfTestClient.exe"</StartArguments>
Pero en última instancia son los PropertyTypeGuids los que debe insertar manualmente para que VS reconozca el proyecto como un Proyecto de Biblioteca de Servicios WCF.
Esto es lo que tuve que hacer para convertir mi biblioteca de clase a la aplicación WCF REST.
1) Modifique el archivo .csproj y agregue las dos líneas siguientes al primer elemento PropertyGroup en el archivo .csproj.
<ProjectTypeGuids>{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
<UseIISExpress>false</UseIISExpress>
2) Añadir la siguiente línea a continuación <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
a la importación de archivos Microsoft.WebApplication.targets
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
3) Agregue el código siguiente al final del archivo antes de la etiqueta </Project>
.
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<UseIIS>False</UseIIS>
<AutoAssignPort>True</AutoAssignPort>
<DevelopmentServerPort>50178</DevelopmentServerPort>
<DevelopmentServerVPath>/</DevelopmentServerVPath>
<IISUrl>
</IISUrl>
<NTLMAuthentication>False</NTLMAuthentication>
<UseCustomServer>False</UseCustomServer>
<CustomServerUrl>
</CustomServerUrl>
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>
4) Guarde el archivo .csproj y cargar el proyecto.
5) Agregue un archivo Web.Config al proyecto y agregue el siguiente código mínimo. Puede agregar más más tarde según su requisito.
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>
</system.webServer>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<standardEndpoints>
<webHttpEndpoint>
<!--
Configure the WCF REST service base address via the global.asax.cs file and the default endpoint
via the attributes on the <standardEndpoint> element below
-->
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
</configuration>
6) Agregue un archivo Global.asax. A continuación hay un archivo de muestra.
public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes();
}
private void RegisterRoutes()
{
// Edit the base address of Service1 by replacing the "Service1" string below
RouteTable.Routes.Add(new ServiceRoute("YourService", new WebServiceHostFactory(), typeof(YourServiceClass)));
}
}
7) Por último, en las propiedades del proyecto, bajo pestaña Generar, si la ruta de salida se establece en bin\Debug
modificarlo para bin\
.
- 1. ¿Qué pasos debo seguir para proteger mi clave de API de Google Maps?
- 2. Qué reglas de StyleCop debo seguir al escribir una biblioteca de código abierto
- 3. ¿Qué camino de aprendizaje debo seguir para aprender ASP.NET?
- 4. ¿Qué es una biblioteca de clases portátil?
- 5. Convertir el proyecto .exe a la biblioteca de clases
- 6. Pasos a seguir para integrar lentamente las pruebas unitarias en un proyecto
- 7. crear una biblioteca de clases para un proyecto sharepoint
- 8. ¿Debo convertir de MooTools a jQuery?
- 9. ¿Qué pasos debe seguir para aumentar el rendimiento de un sitio Sharepoint?
- 10. ¿Cuáles son los pasos que debo seguir para poder escribir y editar programas de Python en mi teléfono Android?
- 11. ¿Una biblioteca para convertir svg en imágenes?
- 12. ¿Qué convención de codificación seguir para PHP?
- 13. ¿Convertir una biblioteca estática a una biblioteca compartida?
- 14. ¿Qué biblioteca de validación java debo usar?
- 15. ¿Qué biblioteca de gráficos .net debo usar?
- 16. Biblioteca PHP para convertir JSON a CSV?
- 17. ¿Una buena biblioteca para convertir PDF a TIFF?
- 18. cadena de conexión en app.config en una biblioteca de clases
- 19. ¿Qué biblioteca C++ debo usar para implementar un cliente HTTP?
- 20. ¿Debo ir a Spring o seguir con Java EE 6?
- 21. Biblioteca de clases portátil para la clase compartida [DataContract]
- 22. Cómo convertir clases JSON a C#?
- 23. ¿Qué biblioteca debo usar para generar RSS en Common Lisp?
- 24. Los pasos más simples para convertir TCL TK a una aplicación independiente
- 25. cobertura de código para una biblioteca de clases utilizando dotCover
- 26. ¿Qué biblioteca C++ puedo usar para convertir un PDF a una imagen en Windows?
- 27. ¿Tiene acceso a web.config desde una biblioteca de clases separada?
- 28. Biblioteca de clases portátil equivalente a MethodBase.GetCurrentMethod
- 29. Soy un aspirante a desarrollador que quiere construir sistemas grandes como PayPal. ¿Qué camino debo seguir?
- 30. Pasos para cargar una aplicación de iPhone en la AppStore
He creado el contrato de servicio. Implementado. Tengo un problema en el punto de host. Cuando crea una aplicación WCF, lo hace por usted. Me gustaría modificar una aplicación de biblioteca de clases para hacer eso. –
Aún está iniciando un exe para el servicio y creando una instancia del servicio. Ese es mi problema. Necesito que Visual Studio lo descubra como lo hace en una biblioteca de servicios de WCF. –