0

我无法理解 WCF REST 服务的问题。问题是该服务是由 IIS 托管的。

在服务中,我有两个功能:

[ServiceContract]
public interface IFishMapService
{
    [OperationContract]
    [WebInvoke(Method = "GET",
                BodyStyle = WebMessageBodyStyle.WrappedRequest,
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json,
                UriTemplate = "/FindAllRecords")]
     List<Record> findAllRecords();


    [OperationContract]
    [WebInvoke(Method = "GET",
                BodyStyle = WebMessageBodyStyle.WrappedRequest,
                ResponseFormat = WebMessageFormat.Json,
                RequestFormat = WebMessageFormat.Json,
                UriTemplate = "/returnHello")]
      String returnHello();
}

第二个只是一个返回字符串的简单测试函数。第一个返回一个列表并连接到我机器上由 MS SQL Server 2008 制作的数据库。

所以......测试时发生了什么: - 如果我用我的 IP 地址测试第二个函数,如下所示:

ipAddress/MyApp/FishMapService.svc/returnHello 

一切都好!

  • 如果我对第二个函数做同样的事情,但使用 localhost:

    本地主机:57640/FishMapService.svc/returnHello

一切都还可以!得到一个美好而美丽的回应!

  • 如果我用 localhost 测试第一个:

    本地主机:57640/FishMapService.svc/FindAllRecords

我看到了已发送的查询结果!又美了!我看到了我需要的所有信息。

  • 如果我用我的 IP 测试同一个:

    ipAddress/MyApp/FishMapService.svc/FindAllRecords

在浏览器“[]”中获取这个?!

为什么会这样?!有任何想法吗?

4

1 回答 1

0

问题已经解决了!

解决方案是 MS SQL Studio 中当前数据库的权限。一个好的建议是检查服务器的日志文件。您可以通过管理(文件夹)-> SQL Server 日志-> 当前日志来执行此操作

在新窗口中,您将看到谁正在尝试登录您的 SQL Server。对我来说,它是“IIS APPPOOL\Default Website”。所以你去数据库表 [DataBaseTableNae] -> 安全 -> 右键单击​​“用户” -> 新用户

然后使用您已经在日志文件中看到的名称添加新用户,对我来说再次是“IIS APPPOOL\Default Website”,并为该用户提供您想要的权限。

最后,您应该能够看到在浏览器中输入的响应 ipAddress/MyApp/FishMapService.svc/FindAllRecords (这是我项目中的 url)

希望这对某人有用!

干杯!

于 2013-02-09T23:05:14.853 回答