WCF托管IP地址

时间:2012-07-31 10:35:47

标签: wcf localhost ip-address

我创建了一个返回JSON数据的WCF服务。 这是我的代码:

namespace AppServices
{
[ServiceContract]
public interface Service1
{
[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "/GetCities", BodyStyle = WebMessageBodyStyle.WrappedRequest,
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
List<City> GetCityCode();
}
[DataContract]
public class City
{
[DataMember]
public string CityId { get; set; }
[DataMember]
public string CityName { get; set; }
[DataMember]
public string StateId { get; set; }
[DataMember]
public string Priority { get; set; }
}
}

public class ServiceAPI : Service1
    {
 public List<City> GetCityCode()
        {
            adp = new SqlDataAdapter("Select * from tblCity", offcon);
            adp.Fill(ds, "City");
            var city = (from DataRow dr in ds.Tables["City"].Rows
                        select new
                        {
                            Id = dr["intCityId"].ToString(),
                            Name = dr["strTitle"].ToString(),
                            sid = dr["intStateId"].ToString(),
                            priority = dr["intPriority"].ToString()
                        }).Select(x => new City() { CityId = x.Id, CityName = x.Name, StateId = x.sid, Priority = x.priority }).ToList();

            return city;
        }
}

我的web.config如下:

    <?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="ServiceBehaviour" name="PatrikaAPIService.PatrikaService">
        <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding"
                  contract="PatrikaAPIService.IPatrikaService"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehaviour">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment/>
  </system.serviceModel>
</configuration>

当我在localhost上运行此wcf时,一切正常工作: 本地主机:13186 / ServiceApp.svc / GetCities

当我通过 IP地址时,

问题: 192.168.1.16:13186/ServiceApp.svc/GetCities

它给出了一个网站太忙的错误...... &安培;我想在其他计算机上的URL中访问此wcf服务,我的意思是我网络上的其他PC。 我已根据我的要求更改了我的web.config,如果有人知道接下来要用IP地址托管此服务该怎么做。 或者将其托管到Microsoft 2003 Server SP2中。 请帮忙..

1 个答案:

答案 0 :(得分:1)

我假设这是卡西尼?如果是这样的话 - 我认为如果主机头是“localhost”,Cassini只会响应。当然,你不会通过你的IP回复它。

在IIS或IIS Express中托管它。

另一方面 - 如果这是一个.Net 4项目,你可能会有兴趣注意到通过WCF以这种方式实现的Rest服务很快就会成为遗产 - 并且一旦它被转移到Asp.Net Web API就被它取代RTM(目前处于RC阶段) - 如果可以的话,我建议您考虑这种新技术(尽管不会解决这个问题)。