我创建了一个WCF Web服务,并在IIS(7)中创建了一个新站点。我为http请求创建了一个新端口(8002)。我可以浏览到该网站并获得典型的“您无权查看此目录...”,因此我知道该网站正在运行。但是,我在我的web.config中将我的端点地址设置为“http://1.1.1.1:8002”(其中1.1.1.1替换为我的实际真实IP地址)。当我使用http://1.1.1.1:8002/service.svc浏览到该服务时,我无法找到页面错误。站点的根文件夹中有一个service.svc。设置有什么问题?
这是web.config文件,如果有用(同样,1.1.1.1替换为我的真实IP地址):
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<customErrors mode="Off"/>
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicBinding">
<security mode="None">
<transport clientCredentialType="None" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="WcfService.ServiceBehavior" name="WcfService.Service">
<endpoint address="http://1.1.1.1:8002" binding="basicHttpBinding" bindingConfiguration="BasicBinding" contract="WcfService.IService">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WcfService.ServiceBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
答案 0 :(得分:4)
在IIS中托管时,无法控制配置文件中服务的地址。您只能控制端点的相对地址 - 它相对于.svc文件。
因此,如果您在站点http://YourIP:8002中托管服务,则其地址为http://YourIP:8002/Service.svc,并且端点中的地址元素与此地址相关。但我希望您不直接在网站上托管服务。您在站点中有一些应用程序,并且应用程序的名称是URL的一部分:http://YourIP:8002/YourApplicationName/Service.svc实际上,用于嵌套服务的每个文件夹都是URL的一部分。