Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
silverlight访问iis 7中承载的wcf服务时发生异步异常_Wcf_Silverlight_Asynchronous_Invalidation - Fatal编程技术网

silverlight访问iis 7中承载的wcf服务时发生异步异常

silverlight访问iis 7中承载的wcf服务时发生异步异常,wcf,silverlight,asynchronous,invalidation,Wcf,Silverlight,Asynchronous,Invalidation,伙计们,我在创建SL客户端以访问IIS7中托管的WCF服务时遇到了一个奇怪的问题。我的服务合同如下所示: [ServiceContract] public interface IAuthorizationService { [OperationContract] RoleMetadata GetRoleMetadata(); [OperationContract] void CreateNewRole(Guid id, string name, string d

伙计们,我在创建SL客户端以访问IIS7中托管的WCF服务时遇到了一个奇怪的问题。我的服务合同如下所示:

[ServiceContract]
public interface IAuthorizationService
{
    [OperationContract]
    RoleMetadata GetRoleMetadata();

    [OperationContract]
    void CreateNewRole(Guid id, string name, string description);
    [OperationContract]
    void UpdateRole(Guid id, string name, string description);
    [OperationContract]
    void RemoveRole(Guid id);

    [OperationContract]
    void AddPersonsToRole(Guid roleID, IEnumerable<int> pids);
    [OperationContract]
    void RemovePersonsFromRole(Guid roleID, IEnumerable<int> pids);

    [OperationContract]
    void GrantRolePermissions(Guid roleID, Int64 mask);
    [OperationContract]
    void RevokeRolePermissions(Guid roleID, Int64 mask);
}
[服务合同]
公共接口IAuthorizationService
{
[经营合同]
RoleMetadata GetRoleMetadata();
[经营合同]
void CreateNewRole(Guid id、字符串名称、字符串描述);
[经营合同]
void UpdateRole(Guid id、字符串名称、字符串描述);
[经营合同]
void-ole(Guid-id);
[经营合同]
void AddPersonsToRole(Guid roleID,IEnumerable PID);
[经营合同]
void RemovePersonsFromRole(Guid roleID,IEnumerable PID);
[经营合同]
无效GrantRolePermissions(Guid roleID,Int64掩码);
[经营合同]
作废撤销角色权限(Guid roleID,Int64掩码);
}
我说这个问题很奇怪,因为这个服务的部分方法是可以访问的,而其他方法是不可访问的。条件是,当我尝试访问方法GetRoleMetadata时,出现了一个错误,显示发生了异步异常,结果无效。但当我调用CreateNewRole时,我在数据库中得到了一条新记录

我已经多次检查了服务和客户机配置,并在一些不同的实现中重写了服务,我收获了无用的收获。所以我希望有大师能帮助我战胜它

还有一件事,它完全在开发环境下运行(vs2013、sqlexpress 2008)。在服务器上实施project(Windows server 2008 R2 enterprise、SQLServer 2008 enterprise、IIS7、.net framework 4.0)后会出现问题

[2014-10-16]我用WCF频道模式重写了服务和相应的客户端代码。新签订的合同如下:

 [ServiceContract]
public interface IAuthority
{
    [OperationContract(AsyncPattern = true)]
    IAsyncResult BeginGetRoles(AsyncCallback callback, object state);
    RoleMetaData EndGetRoles(IAsyncResult result);
    [OperationContract(AsyncPattern = true)]
    IAsyncResult BeginUpdateRole(bool addNewRole, Guid id, string name, string description, AsyncCallback callback, object state);
    void EndUpdateRole(IAsyncResult result);
    [OperationContract(AsyncPattern = true)]
    IAsyncResult BeginRemoveRole(Guid id, AsyncCallback callback, object state);
    void EndRemoveRole(IAsyncResult result);
    [OperationContract(AsyncPattern = true)]
    IAsyncResult BeginAlterRoleMembers(Guid roleID, bool addMembers, IEnumerable<int> pids, AsyncCallback callback, object state);
    void EndAlterRoleMembers(IAsyncResult result);
    [OperationContract(AsyncPattern = true)]
    IAsyncResult BeginAlterRolePermissions(Guid roleID, bool grantPermissions, Int64 mask, AsyncCallback callback, object state);
    void EndAlterRolePermissions(IAsyncResult result);
}
[服务合同]
公共接口权限
{
[操作契约(AsyncPattern=true)]
IAsyncResult BeginGetRoles(异步回调,对象状态);
RoleMetaData EndGetRoles(IAsyncResult结果);
[操作契约(AsyncPattern=true)]
IAsyncResult BeginUpdateRole(bool addNewRole、Guid id、字符串名称、字符串描述、异步回调、对象状态);
void EndUpdateRole(IAsyncResult结果);
[操作契约(AsyncPattern=true)]
IAsyncResult BeginRemoveRole(Guid id、异步回调、对象状态);
空隙清除器(IAsyncResult结果);
[操作契约(AsyncPattern=true)]
IAsyncResult BeginAlterRoleMembers(Guid roleID、bool addMembers、IEnumerable PID、AsyncCallback回调、对象状态);
无效EndAlterRoleMembers(IAsyncResult结果);
[操作契约(AsyncPattern=true)]
IAsyncResult BeginAlterRolePermissions(Guid roleID、bool grantPermissions、Int64掩码、异步回调、对象状态);
无效EndAlterRolePermissions(IAsyncResult结果);
}
然后在客户端,我使用ChannelFactory和Channel访问服务。然而,问题仍然存在。我可以访问除GetRoles之外的所有方法。这一次,我收到一条新的错误消息,如下所示:“[HttpWebRequest\u WebException\u RemoteServer]NotFound”。我的心都碎了。下一步,我将重写整个UI和服务代理,即一个全新的客户端来测试这个问题。上帝保佑我

[2014-10-16 23:32成都] 我已经编写了一个新的简单客户端来访问服务。问题仍然存在。然而,这清楚地表明服务器上有问题。明天我必须仔细检查服务器端的东西。IIS配置是头号嫌疑犯吗?但仍有5个服务与此不幸的授权服务共享相同的配置,并按预期运行

WCF trace也没有对我表示应有的尊重!我在web.config中配置了如下跟踪,只得到了一个空文件

<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>
        </sources>
        <sharedListeners>
            <add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="D:\trace.xml"/>
        </sharedListeners>
    </system.diagnostics>
<system.serviceModel>
        <diagnostics>
            <messageLogging logEntireMessage="true"
                                        logMalformedMessages="true"
                                        logMessagesAtServiceLevel="true"
                                        logMessagesAtTransportLevel="true"
                                        maxMessagesToLog="500"/>
        </diagnostics>
<!--...-->
</system.serviceModel>


大师们,请让我顿悟,救救我

哦,是的!我修好了!我上了一课,应该总结一下。我的步骤:

1.仔细阅读有关WCF跟踪的规范。(,MSDN中也有关于详细配置跟踪的文章,很容易找到),我认为最好的做法是使用服务配置编辑工具配置跟踪,而不是手动编辑,这样可以避免可能导致跟踪失败的配置错误

2.在正确配置wcf跟踪后,我在服务跟踪日志查看器中获得了带有红色前景的活动错误日志。检查后,我很快找到了错误并纠正了它

3.我的例外是来自数据访问层(DAL)。一位同事无意中修改了一个存储过程—只是交换了相同数据类型的两列的位置。他不知道,也没有通知我。这只发生在实现服务器上,而不是在开发环境中。所以我没有从实现服务器数据库生成新的DAL类。因此,逻辑错误总是发生在我的服务中。这表明实体框架可能是一个很好的选择,可以避免类似的问题

4.另一个内部教训是,我们这个项目的专案组管理过于松散。由于如此重大的沟通问题,合作在某种程度上可以算作失败