WCF 不托管 [重复]
Posted
技术标签:
【中文标题】WCF 不托管 [重复]【英文标题】:WCF does not host [duplicate] 【发布时间】:2015-01-03 00:02:47 【问题描述】:直截了当,我有一个 WCF 项目和主机项目(我想启动服务),当我将 WCF 作为启动项目时,它托管服务,我收到一条确认消息(右下角)一切正常,但是当我尝试从 Host 项目托管时,它没有托管,没有任何确认消息。
这是我的主机代码:
static void Main(string[] args)
using (ServiceHost host = new ServiceHost(typeof(MovieService)))
host.Open();
Console.WriteLine("The host is online.");
Console.ReadLine();
host.Close();
宿主 app.config:
<system.serviceModel>
<services>
<service name="CinemaProject.WCF.MovieService">
<endpoint address="" binding="wsHttpBinding" contract="CinemaProject.WCF.IMovieService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8733/Design_Time_Addresses/CinemaProject.WCF/MovieService/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
还有我的 WCF 代码:
public class MovieService : IMovieService
static MovieCtr movieCtr = new MovieCtr();
public void Add(Movie movie)
movieCtr.add(movie);
public void SearchById(int id)
public void Update(Movie movie)
public void Delete(Movie movie)
public void DeleteById(int id)
public IEnumerable<MovieDTO> All()
return movieCtr.All();
和 WCF app.config:
<system.serviceModel>
<services>
<service name="CinemaProject.WCF.MovieService">
<endpoint address="" binding="wsHttpBinding" contract="CinemaProject.WCF.IMovieService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8733/Design_Time_Addresses/CinemaProject.WCF/MovieService/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
有人可以看看它并指出我正确的方向,并尽可能发布解决方案。
谢谢, 马吕斯·J。
【问题讨论】:
因此您将主机代码作为控制台应用程序启动,但消息The host is online.
没有出现?
它出现了,但我没有在右下角收到确认消息,客户端也无法连接,但如果我启动 WCF,一切正常。
不确定您是否收到确认消息,因为您现在将控制台应用程序用作主机。您可以通过在 CMD 窗口中使用 netstat -a
来检查您的 PC 是否实际上正在侦听端口 8733 上的传入连接。
嗯,它不是在听 8733,但是当我尝试将它更改为正在听的时候,我得到HTTP could not register URL http://+:1037/Design_Time_Addresses/CinemaProject.WCF/MovieService/. Your process does not have access rights to this namespace
。
【参考方案1】:
尝试从 CMD 窗口运行:
netsh http add urlacl url=http://+8733:/ user=DOMAIN\user
指定正确的域和用户
【讨论】:
以上是关于WCF 不托管 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
想要将 WCF Web 服务作为 Windows 服务托管,而不是在 IIS 中托管