简体   繁体   English

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

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

I have a basic WCF service sitting on a server IIS, a SQL db sits on it as well. 我在服务器IIS上有一个基本的WCF服务,在它上面也有一个SQL数据库。

locally when I run it, it works fine and all my service functions work however once I publish to the server IIS I get 在本地运行它时,它可以正常工作,并且所有服务功能都可以运行,但是一旦发布到服务器IIS,我就会得到

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

Only when I call the /function 仅当我调用/ function

if I just go to the start page i get end point not found, which is the same on my local. 如果我只是转到开始页面,则找不到终点,这与我本地的终点相同。

here is what my service.svc looks like 这是我的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

    }
}

I also created a global.asax 我还创建了一个global.asax

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

and here is my web.config 这是我的web.config

I was originally getting a 404 error but i have managed to solve it to where it shows my service has no end point. 我最初收到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>

I have tried a few different options with the config I found on microsofts website but it hasn't helped. 我已经尝试了一些在Microsoft网站上找到的配置选项,但是并没有帮助。

thank you. 谢谢。

I noticed that you use the ORM framework to return DB entry. 我注意到您使用ORM框架返回数据库条目。 If the service works properly in local not server, it seems to me that there is something wrong with the database connection, try to check the connection string, avoid using windows integrated security to connect the database. 如果该服务在本地而非服务器上正常运行,则在我看来数据库连接有问题,请尝试检查连接字符串,避免使用Windows Integrated Security连接数据库。
Beside, here are my code snippets about hosting Restful style wcf service. 此外,这是有关托管Restful风格的wcf服务的代码段。
Server(wcf service application) 服务器(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);
    }

Configuration. 组态。

  <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>

Connection string. 连接字符串。

<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>

Feel free to let me know if there is anything I can help with. 请随时告诉我是否有什么我可以帮助的。

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

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