.NET Forum / ASP.NET / Web Services / August 2008
VS2008 creates a 2nd endpoint when actualising a web reference
|
|
Thread rating:  |
Frank Hauptlorenz - 23 Jul 2008 18:52 GMT Hello out there,
I changed an existing and good working webservice from an wsHttpBinding to an NetTcpBinding. This is working (after trying some time) and has real a better performance!
But one thing is strange: when I'm now actualising the web reference from within VS2008, VS2008 creates a 2nd endpoint config in my app.conf. The endpoint is exactly the same as the existing but the name and bindingConfiguration have the suffix "1" . Additional VS2008 creates this entry:
<identity> <userPrincipalName value="Domain\Username" /> </identity>
Where Domain\Username is my username in the domain. The client does not run with these informations, I have to remove them manually.
What's wrong with VS2008?
Thank you, Frank
Steven Cheng [MSFT] - 24 Jul 2008 04:22 GMT Hi Frank,
From your description, you are developing an WCF service and a client through VS 2008. The service used to use wshttpbinding, and when you switch it to netTcpBinding and regenerate the service reference at client, you found the client generate two configuration section for the service endpoint , correct?
Based on my experience, such behavior might occur at the following situation:
* you have an WCF service endpoint using certain configuration(binding and behavior ...)
* you change its binding or other settings
* without remove the original client service reference(proxy class) in client project, you directly update the reference, it might keep the original reference setting and generate a new client endpoint entry.
Therefore for this issue, I suggest you always first remove the existing client-side service reference(in solution explorer), this will make the IDE remove the proxy class and also clear the app.config file. Then, add the "service reference" again in the project.
For the second issue you mentioned:
===================== but the name and bindingConfiguration have the suffix "1" . Additional VS2008 creates this entry:
<identity> <userPrincipalName value="Domain\Username" /> </identity> =========================
based on the document you can see that this element <identity> is used to set a predefined identiy for the expected server-side service(not for client):
#<identity> http://msdn.microsoft.com/en-us/library/ms731721.aspx
Therefore, it is generated by the IDE according to the server-side service's identity. By default when using netTCPBinding, WCF service endpoint will use windows authentication and if you are using the VS IDE test server(instead of IIS), the service's running process identity is the current logon user(that should be the "domain\username" for your case. You can manually specify another expected identity(but the default one is ok).
Or if you do not need security feature for the current case, you can turn it off in your service configuration( in the NetTcpBinding configuration):
For example: ============================== <system.serviceModel> <services> <service behaviorConfiguration="WCFIDESvr.TestServiceBehavior" ............ <endpoint address="net.Tcp://localhost:8989/TestService" binding="netTcpBinding" bindingConfiguration="TSBinding" contract="WCFIDESvr.ITestService"> </endpoint> ..................... </service> </services>
<bindings> <netTcpBinding> <binding name="TSBinding" > <!-- i turn off the security here --> <security mode="None" > <transport clientCredentialType="None"/> <message clientCredentialType="None"/> </security> </binding> </netTcpBinding> </bindings> ================================
You can get more about the WCF configuration schema info here:
#Windows Communication Foundation Configuration Schema http://msdn.microsoft.com/en-us/library/ms731734.aspx
and for WCF security programming:
#Windows Communication Foundation Security http://msdn.microsoft.com/en-us/library/ms732362.aspx
If there is anything unclear, please feel free to post here.
Sincerely,
Steven Cheng
Microsoft MSDN Online Support Lead
Delighting our customers is our #1 priority. We welcome your comments and suggestions about how we can improve the support we provide to you. Please feel free to let my manager know what you think of the level of service provided. You can send feedback directly to my manager at: msdnmg@microsoft.com.
================================================== Get notification to my posts through email? Please refer to http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif ications.
Note: The MSDN Managed Newsgroup support offering is for non-urgent issues where an initial response from the community or a Microsoft Support Engineer within 1 business day is acceptable. Please note that each follow up response may take approximately 2 business days as the support professional working with you may need further investigation to reach the most efficient resolution. The offering is not appropriate for situations that require urgent, real-time or phone-based interactions or complex project analysis and dump analysis issues. Issues of this nature are best handled working with a dedicated Microsoft Support Engineer by contacting Microsoft Customer Support Services (CSS) at http://msdn.microsoft.com/subscriptions/support/default.aspx. ================================================== This posting is provided "AS IS" with no warranties, and confers no rights.
-------------------- Date: Wed, 23 Jul 2008 19:52:42 +0200 From: Frank Hauptlorenz <ecstasy.tribe@nospam.nospam> User-Agent: Thunderbird 2.0.0.14 (Windows/20080421) MIME-Version: 1.0 Subject: VS2008 creates a 2nd endpoint when actualising a web reference
Hello out there,
I changed an existing and good working webservice from an wsHttpBinding to an NetTcpBinding. This is working (after trying some time) and has real a better performance!
But one thing is strange: when I'm now actualising the web reference from within VS2008, VS2008 creates a 2nd endpoint config in my app.conf. The endpoint is exactly the same as the existing but the name and bindingConfiguration have the suffix "1" . Additional VS2008 creates this entry:
<identity> <userPrincipalName value="Domain\Username" /> </identity>
Where Domain\Username is my username in the domain. The client does not run with these informations, I have to remove them manually.
What's wrong with VS2008?
Thank you, Frank
Frank Hauptlorenz - 25 Jul 2008 06:37 GMT Hi Steven,
okay I will try to remove and add the service reference again. As for the identity: I think I want to use transport security. So the question is: If I remove the
<identity> <userPrincipalName value="Domain\Username" /> </identity>
section the client uses my user name anyway, or? More problematic If I leave this in, I can't connect to the service (SSPI-Failure).
Frank
Steven Cheng [MSFT] schrieb:
> Hi Frank, > [quoted text clipped - 157 lines] > Thank you, > Frank Frank Hauptlorenz - 25 Jul 2008 09:37 GMT Hi Steven,
a little follow up:
1. Removing and adding the service had no effect. The same issue happens again. 2. The issue has exactly to do with the identity segment. If I leave it in, the actualizing is working. If I remove it and then actualise, VS2008 will create me a second client entry.
I do still not know, for what I need the identy segment in the client. (PS: I switched to security mode "none" now, this is working)
Thank you, Frank
Frank Hauptlorenz schrieb:
> Hi Steven, > [quoted text clipped - 179 lines] >> Thank you, >> Frank Tiago Halm - 26 Jul 2008 15:14 GMT Frank,
When using default setup with wsHttpBinding, the authentication will be done via NTLM or SspiNegotiate. The client, when generating a proxy will (most of the time) generate an entry like: <identity> <userPrincipalName value=yourname@yourdomain.com /> </identity>
This is due to Kerberos and how clients reference the target they want to access. A kerberos target can be referenced by a UPN (User Principal Name) which is what you see above, or by an SPN (Service Principal Name) in the format of: <identity> <servicePrincipalName value="http/yourhostname" /> </identity>
The SPN free the client from the knowing the account being used on the backend and allows the target to be "moved" or "configured" with no impact on the client side.
Now, going back to your issue, you're most probably suffering from the fact that your client and your service are probably on the same box. And since I did not mention NTLM here, its probably an option (in your specific case) to make the client try to connect via NTLM like this: <identity> <servicePrincipalName /> </identity>
What this means is that a client without the value attribute will automatically use NTLM when authenticating to the service. Give it a try, and let us know how it goes.
cheers, Tiago Halm
> Hi Steven, > [quoted text clipped - 192 lines] >>> Thank you, >>> Frank Steven Cheng [MSFT] - 28 Jul 2008 03:46 GMT Hi Frank,
Thanks for your followup.
So currently, what's the error message/exception you got, is it an exception about "security negotiate"? Seems the VS will generate different client proxy class based on different service credential setting. Would you let me know what's your WCF service's current running process identity? Is it an system account(such as network service ) or a normal domain user account?
here are some threads and article mentioned how the service process idneity will affect the client-side's negotiate with server-side(when using windows authentication):
#Moving Services and User Principals http://blogs.msdn.com/drnick/archive/2007/04/16/moving-services-and-user-pri ncipals.aspx
#serPrincipalName element generated in client config http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=404622&SiteID=1
I suggest you also try Tiago's suggestion. If there is any other findings or questions, please feel free to post here.
Sincerely,
Steven Cheng Microsoft MSDN Online Support Lead
Delighting our customers is our #1 priority. We welcome your comments and suggestions about how we can improve the support we provide to you. Please feel free to let my manager know what you think of the level of service provided. You can send feedback directly to my manager at: msdnmg@microsoft.com.
================================================== Get notification to my posts through email? Please refer to http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif ications. ================================================== This posting is provided "AS IS" with no warranties, and confers no rights. -------------------- Date: Fri, 25 Jul 2008 10:37:31 +0200 From: Frank Hauptlorenz <ecstasy.tribe@nospam.nospam> User-Agent: Thunderbird 2.0.0.14 (Windows/20080421) MIME-Version: 1.0 Subject: Re: VS2008 creates a 2nd endpoint when actualising a web reference References: <#RF8izO7IHA.1204@TK2MSFTNGP04.phx.gbl> <qRKWGyT7IHA.5288@TK2MSFTNGHUB02.phx.gbl> <#EEL9hh7IHA.5024
Hi Steven,
a little follow up:
1. Removing and adding the service had no effect. The same issue happens again. 2. The issue has exactly to do with the identity segment. If I leave it in, the actualizing is working. If I remove it and then actualise, VS2008 will create me a second client entry.
I do still not know, for what I need the identy segment in the client. (PS: I switched to security mode "none" now, this is working)
Thank you, Frank
Steven Cheng [MSFT] - 30 Jul 2008 08:22 GMT Hi Frank,
Have you got any progress on this issue or have you tried something mentioned in previous messages?
If there is still anything unclear or need help, please feel free to post here.
Sincerely,
Steven Cheng Microsoft MSDN Online Support Lead
Delighting our customers is our #1 priority. We welcome your comments and suggestions about how we can improve the support we provide to you. Please feel free to let my manager know what you think of the level of service provided. You can send feedback directly to my manager at: msdnmg@microsoft.com.
================================================== Get notification to my posts through email? Please refer to http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif ications.
================================================== This posting is provided "AS IS" with no warranties, and confers no rights. --------------------
From: stcheng@online.microsoft.com (Steven Cheng [MSFT]) Organization: Microsoft Date: Mon, 28 Jul 2008 02:46:03 GMT Subject: Re: VS2008 creates a 2nd endpoint when actualising a web reference
Hi Frank,
Thanks for your followup.
So currently, what's the error message/exception you got, is it an exception about "security negotiate"? Seems the VS will generate different client proxy class based on different service credential setting. Would you let me know what's your WCF service's current running process identity? Is it an system account(such as network service ) or a normal domain user account?
here are some threads and article mentioned how the service process idneity will affect the client-side's negotiate with server-side(when using windows authentication):
#Moving Services and User Principals http://blogs.msdn.com/drnick/archive/2007/04/16/moving-services-and-user-pri ncipals.aspx
#serPrincipalName element generated in client config http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=404622&SiteID=1
I suggest you also try Tiago's suggestion. If there is any other findings or questions, please feel free to post here.
Sincerely,
Steven Cheng Microsoft MSDN Online Support Lead
Delighting our customers is our #1 priority. We welcome your comments and suggestions about how we can improve the support we provide to you. Please feel free to let my manager know what you think of the level of service provided. You can send feedback directly to my manager at: msdnmg@microsoft.com.
================================================== Get notification to my posts through email? Please refer to http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif ications. ================================================== This posting is provided "AS IS" with no warranties, and confers no rights.
Frank Hauptlorenz - 04 Aug 2008 08:55 GMT Hi Steven, Tiago,
thank you both for your suggestions. I will try them later, I will now fill the WCF services with life. If this is finished and the project goes to the implementation state, I will specify the correct endpoint settings.
Thank you, Frank
Steven Cheng [MSFT] schrieb:
> Hi Frank, > [quoted text clipped - 71 lines] > ================================================== > This posting is provided "AS IS" with no warranties, and confers no rights. Steven Cheng [MSFT] - 04 Aug 2008 09:37 GMT Thanks for your reply Frank,
No problem. If you need any further help later, please feel free to post here.
Sincerely,
Steven Cheng Microsoft MSDN Online Support Lead
Delighting our customers is our #1 priority. We welcome your comments and suggestions about how we can improve the support we provide to you. Please feel free to let my manager know what you think of the level of service provided. You can send feedback directly to my manager at: msdnmg@microsoft.com.
================================================== Get notification to my posts through email? Please refer to http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif ications.
================================================== This posting is provided "AS IS" with no warranties, and confers no rights. -------------------- Date: Mon, 04 Aug 2008 09:55:02 +0200 Subject: Re: VS2008 creates a 2nd endpoint when actualising a web reference
Hi Steven, Tiago,
thank you both for your suggestions. I will try them later, I will now fill the WCF services with life. If this is finished and the project goes to the implementation state, I will specify the correct endpoint settings.
Thank you, Frank
Steven Cheng [MSFT] schrieb:
> Hi Frank, > [quoted text clipped - 17 lines] > ================================================== > Get notification to my posts through email? Please refer to http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
> ications. =
Free MagazinesGet these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...
|
|
|