Code Project

Link Unit

Showing posts with label C#. Show all posts
Showing posts with label C#. Show all posts

Thursday, July 23, 2015

Unable to generate a temporary class (result=1)

While trying to Invoke Web Services we faced following error:
Error:
Unable to generate a temporary class (result=1).
error CS0029: Cannot implicitly convert type '
WebServices.Proxy.CustomType' to 'WebServices.Proxy.CustomType[]'
error CS0030: Cannot implicitly convert type '
WebServices.Proxy.CustomType[]' to 'WebServices.Proxy.CustomType'

 Cause

A known issue with WSDL.exe can cause a proxy class to be generated incorrectly if an array of complex type includes an element that is also an array of complex type and for which only one element exists.

Resolution:

We need to open reference.cs file and change respective customtype from double dimension to single dimension. Rebuild the project and it started working fine.


Monday, March 22, 2010

DoesUserHavePermissions in WebPart

I wrote a search webpart and it need check if the current user has the right to some lists so I can highlight those lists in different color , but Whenever SPList.DoesUserHavePermissions is called on the object[List/Library], for the user who does not have the permission, it should return false, but it gives an exception. An IE browser pops up asking for user to type in username and password. This dialog box should not appear as my code catches the exception.
Solution: After googling around for some solution on the same line , found points which may help fellow visitors.
#1 DoesUserHavePermissions only works in WSS, not SPS
#2 Suppress Popup for Unauthorized Access:The problem happens with your SPSite object from which you get the web, then the list, there is a property called CatchAccessDeniedException, you should set it to false, then make your call, end the popup will not show up. This is a standard WSS feature, and will happen every time you try to access a resource to which the current user does not have access.
WorkAround : Use the following in your webpart

=====
using(SPWeb oWeb=SPContext.Current.Web)
{
oSite.CatchAccessDeniedException = false; // Suppress the popup
SPListCollection oList = oWeb.Lists;
oList.ListsForCurrentUser = true;
int iCount = oList.Count;
for(int i=0;i{
try
{
if(oList[i].Permissions.DoesUserHavePermissions(SPRights.ViewListItems)) // Check for view Rights
{
// Do something
}
}
catch(System.UnauthorizedAccessException ex)
{
//Do Nothing, or as you please
}
}
}
=====


Hope this helps