繁体   English   中英

WCF服务在本地而非服务器IIS上运行以实现功能

[英]WCF service working on local not server IIS for functions

我在服务器IIS上有一个基本的WCF服务,在它上面也有一个SQL数据库。

在本地运行它时,它可以正常工作,并且所有服务功能都可以运行,但是一旦发布到服务器IIS,我就会得到

The server encountered an error processing the request. Please see the service help page for constructing valid requests to the service.

仅当我调用/ function

如果我只是转到开始页面,则找不到终点,这与我本地的终点相同。

这是我的service.svc的样子

using System.ServiceModel;
using System.ServiceModel.Web;
using System.ServiceModel.Activation;
using System.Web.Script.Services;
using Newtonsoft.Json.Linq;

namespace myNameSpace
{
    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class Service
    {


        /// <summary>
        /// ....
        /// </summary>
        /// <returns>string</returns>
        [WebInvoke(UriTemplate = "/NextWeek", Method = "GET")]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string nextWeek()
        {
            return db.Instance.getNextWeek();
        }

        //this continues for awhile and is basically the same type of functions

    }
}

我还创建了一个global.asax

   public class Global : HttpApplication
    {
        void Application_Start(object sender, EventArgs e)
        {
            RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(), typeof(Service)));
        }
    }

这是我的web.config

我最初收到404错误,但设法解决了它显示我的服务没有终点的地方。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!--
    For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.

    The following attributes can be set on the <httpRuntime> tag.
      <system.Web>
        <httpRuntime targetFramework="4.5" />
      </system.Web>
  -->
  <system.web>
    <compilation targetFramework="4.6" />
    <pages controlRenderingCompatibilityVersion="4.0" />
  </system.web>
  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <standardEndpoints>
      <webHttpEndpoint>
        <!-- 
            Configure the WCF REST service base address via the global.asax.cs file and the default
            endpoint via the attributes on the <standardEndpoint> element below
        -->
        <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" />
      </webHttpEndpoint>
    </standardEndpoints>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <!-- 
              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="true" />

        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
  <connectionStrings>
    .....
  </connectionStrings>
</configuration>

我已经尝试了一些在Microsoft网站上找到的配置选项,但是并没有帮助。

谢谢。

我注意到您使用ORM框架返回数据库条目。 如果该服务在本地而非服务器上正常运行,则在我看来数据库连接有问题,请尝试检查连接字符串,避免使用Windows Integrated Security连接数据库。
此外,这是有关托管Restful风格的wcf服务的代码段。
服务器(WCF服务应用程序)

[OperationContract]
    [WebGet(ResponseFormat = WebMessageFormat.Json)]
    Product GetProduct(int ID);
    public Product GetProduct(int ID)
    {
        TestStoreEntities entities = new TestStoreEntities();
        return entities.Products.FirstOrDefault(x => x.Id == ID);
    }

组态。

  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpsGetEnabled="true" httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior>
          <webHttp />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="webHttpBinding" scheme="http" />
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

连接字符串。

<connectionStrings><add name="TestStoreEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=10.157.18.36;initial catalog=TestStore;persist security info=True;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

请随时告诉我是否有什么我可以帮助的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM