当我将其发布到IIS时,我遇到了WCF Rest服务的问题。这一切都适用于VS,但是当通过IIS运行时,我一直收到错误的请求。
一些示例代码,我的服务就像这样简单:
[ServiceContract]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class Admin
{
[WebGet(UriTemplate = "Field/GetAll")]
public IList<EntityFields> GetFields() ...
我已将路线添加到我的global.asax:
RouteTable.Routes.Add(new ServiceRoute("Admin", new WebServiceHostFactory(), typeof(Admin)));
我的web.config看起来像这样。我希望这是我做错事的地方。请注意,这已经改变,并且在阅读此处和MS论坛等方面已多次变形。
<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>
<handlers>
<add name="UrlRoutingHandler"
preCondition="integratedMode"
verb="*"
path="UrlRouting.axd"
type="System.Web.HttpForbiddenHandler, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</handlers>
</system.webServer>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
注意它们是否有用:
非常欢迎任何想法。
答案 0 :(得分:0)
我的案例中的问题最终成为与REST和我的配置无关的东西。我通过在配置中添加以下内容来启用WCF Web服务:
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true" >
<listeners>
<add name="xml"/>
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging">
<listeners>
<add name="xml"/>
</listeners>
</source>
<source name="myUserTraceSource"
switchValue="Information, ActivityTracing">
<listeners>
<add name="xml"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add name="xml"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="C:\logs\Error.svclog" />
</sharedListeners>
</system.diagnostics>
再次点击我的网络服务以获取错误,然后在“SvcTraceViewer.exe”中弹出跟踪日志。这凸显了我在数据库上使用集成安全性这一事实。但是因为我通过浏览器和IIS托管站点访问该服务,所以我在应用程序池标识下访问了该数据库。这突出显示了WCF跟踪中的此错误:
System.Data.SqlClient.SqlException: Cannot open database "XYZ" requested by the login. The login failed...
所以,长话短说,我是一个人... ...