这是一个WCF REST服务。该服务在我的开发机器上完美运行。
我将服务文件放在wwwroot的子文件夹中,名为Services \
不可否认,我非常精通编写代码,但没有那么精通使用IIS来托管/发布我们的服务。
我尝试做的只是将我的开发笔记本电脑中的Services文件夹复制到服务器的wwwroot文件夹。
当发生这种情况并且我尝试访问服务器上的服务时,我得到了一些我不理解的奇怪错误(我有点理解它只是不知道它为什么会发生)
“类型'BooksService.Service1',作为ServiceHost指令中的Service属性值提供,或者在配置元素system.serviceModel / serviceHostingEnvironment / serviceActivations中提供,无法找到。” < / p>
Service1.cs在我的项目中看起来像这样:
namespace BooksService
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in both code and config file together.
public class Service1 : IDataService
我的web.config的一个不错的部分是基于谷歌的推荐,所以很可能我可能不理解某些东西或只是明白错误。
Web.Config看起来像:
***<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true"/>
</system.web>
<!-- When deploying the service library project, the content of the config file must be added to the host's
app.config file. System.Configuration does not support config files for libraries. -->
<system.serviceModel>
<services>
<service name="BooksService.Service1">
<endpoint address="" binding="webHttpBinding" contract="BooksService.IDataService" behaviorConfiguration="restfulBehavior"/>
<host>
<baseAddresses>
<add baseAddress="http://localhost/bookservice" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="restfulBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information,
set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="True"/>
<!-- To receive exception details in faults for debugging purposes,
set the value below to true. Set to false before deployment
to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="False"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>***
我的服务文件如下所示:
&lt;%@ ServiceHost Service =“BooksService.Service1”%&gt;
然后有一个bin文件夹,其中包含我的.dll
所以文件夹布局如下:
C:\的Inetpub \ wwwroot的\ SERVICES \ bookService的\ BIN
其中service.svc位于BookService文件夹中,而程序集位于bin文件夹中。
我可能缺少哪些步骤?
答案 0 :(得分:0)
首先,您需要在IIS中创建一个应用程序并将虚拟目录指向您的应用程序文件夹:c:\ inetpub \ wwwroot \ SERVICES \ BookService。
然后您需要相应地更新服务基地址:
<baseAddresses>
<add baseAddress="http://localhost/services/bookservice" />
</baseAddresses>
您可以在浏览器中输入并浏览到服务位置来测试该网址。