有没有办法自动将条目添加到控制台应用程序的App.config中,该控制台应用程序将用作WCF服务的主机,还是需要手动创建这些条目?
我指的是App.config文件中的<system.serviceModel>
部分,用于配置WCF服务。
我理解.svc文件的概念,只有在您想使用IIS托管服务时才需要这些文件。首先,我计划使用cosole app自行托管服务。现在我面临的另一个问题是我的服务库项目的web.config。创建服务库项目时,会自动创建app.config并自动生成服务配置。但是,我更改了类名,现在我在app.config中看到<service name="MyServiceName">
参数的错误以及服务合同属性的错误。
以下配置有什么问题?我收到服务名称=“ContactMgrService.ContactManager”和contract =“ContactMgrService.IContactMgrService”的错误
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="ContactMgrService.ContactManager">
<endpoint address="" binding="basicHttpBinding" contract="ContactMgrService.IContactMgrService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8733/Design_Time_Addresses/ContactMgrService/Service1/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
</configuration>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using ContactMgrService.DataModel.Contact;
namespace ContactMgrService.Contact
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
[ServiceContract]
public interface IContactMgrService
{
[OperationContract]
IList<ContactData> GetContactList(int? value);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ContactMgrService.DataModel.Contact;
namespace ContactMgrService.Contact
{
public class ContactManager : IContactMgrService
{
ContactContext db = new ContactContext();
public IList<ContactData> GetContactList(int? value)
{
IQueryable<ContactData> contacts = db.Contacts;
return contacts.ToList();
}
}
}
答案 0 :(得分:1)
您的配置文件不正确。指定服务名称和端点合同值时,需要指定包含服务或服务定义的类型的完全限定名称:
<service name="ContactMgrService.Contact.ContactManager">
和
<endpoint address=""
binding="basicHttpBinding"
contract="ContactMgrService.Contact.IContactMgrService">
回答您的其他问题:
是否必须有一个带有svc文件的项目?
如果不是不可能在控制台应用程序中使用svc文件,这是非常不正统的。这对于IIS来说是绝对的。
有没有办法自动将条目添加到App.config
不,你必须手动完成。
答案 1 :(得分:0)
您是否需要编辑App.Config才能定义/编辑服务配置?
而不是那样,我建议你以编程方式进行 - 例如检查link。我不确定你是想要它来创建新的端点还是只是改变设置,但是,它仍然可以这样做。
答案 2 :(得分:0)
在使用自托管时,使用svc文件并不具备任何作用。它像asmx文件一样有助于使用外部世界。我的建议是使用默认配置作为参考并创建自己的配置。因为这些包括服务托管的地址。绑定您想要使用的绑定类型。并签订您希望使用的合同类型。
使用WCFTestClient / Edit WCF配置实用程序将在此为您提供帮助。
https://msdn.microsoft.com/en-us/library/ms732009(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/ms731758(v=vs.110).aspx