[Mono-list] Webservise Discovery Language
Kornél Pál
kornelpal at gmail.com
Wed Nov 8 10:04:22 EST 2006
Hi,
Web.config should be watched as well by recent stable releases.
See bug #78505: http://bugzilla.ximian.com/show_bug.cgi?id=78505
I suggest you to use the stable releases instead of maintenance releases.
Using Application events is just as good as creating a wrapper around an
other handler.
Also note that System.Web.Secrives uses a more complex code to determine
whether the request is a "Documentation" request. For the exact details have
a look at GuessProtocol in
mcs/class/System.Web.Services/System.Web.Services.Protocols/WebServiceHandlerFactory.cs
I think that disallowing GET methods without path info is safer. But in this
case you have to check whether it is a web service request. And I prefer
handler wrappers because that makes easier to catch all web service
requests.
I attached a sample implementation as well.
Kornél
----- Original Message -----
From: "Ben Clewett" <ben at roadrunner.uk.com>
To: "Kornél Pál" <kornelpal at gmail.com>
Cc: <mono-list at lists.ximian.com>
Sent: Wednesday, November 08, 2006 12:46 PM
Subject: Re: [Mono-list] Webservise Discovery Language
> Kornél,
>
> I am making progress. You code seems to work well, I've just got to tidy
> it a bit.
>
> You asked me to report a bug if a change in the Web.config is not
> respected by mod_mono without a restart. I think I have a candidate for a
> bug:
>
> I have added this to Web.config:
>
> <system.web>
> <webServices>
> <protocols>
> <remove name="Documentation"/>
> </protocols>
> </webServices>
> ....
> ....
> ....
> <system.web>
>
>
> This is not respected without a restart. But otherwise works well.
>
> -----------<>------------
>
> Secondly.
>
> For use of other members, I have found this great code snipit for
> Global.asax:
>
> protected void Application_BeginRequest(Object sender, EventArgs e)
> {
> string requestPath = Request.RawUrl.Trim().ToLower();
>
> if (!my_static_global_flag) {
> if (requestPath.IndexOf("?wsdl") > 0 ||
> requestPath.IndexOf("?disco") > 0)
> throw new HttpException(404, "Access Denied.");
> }
> }
>
> This also helps give me good control over visibility of my webservices.
>
> -----------<>------------
>
> Thanks for the help,
>
> Ben
>
>
>
>
> Kornél Pál wrote:
>> Hi,
>>
>> I attached a reference implementation in
>> OptionalDiscoveryRequestHandler.cs.
>>
>> You can control it using the internal
>> OptionalDiscoveryRequestHandler.EnableDiscovery field.
>>
>> The only thing you have to do is to compile the handler to a DLL (don't
>> require it's own assembly, you can put into any existing assembly) and
>> reference this type in Web.config instead of
>> System.Web.Services.Discovery.DiscoveryRequestHandler.
>>
>> Kornél
>>
>> ----- Original Message ----- From: "Ben Clewett" <ben at roadrunner.uk.com>
>> To: "Kornél Pál" <kornelpal at gmail.com>
>> Cc: <mono-list at lists.ximian.com>
>> Sent: Tuesday, November 07, 2006 7:05 PM
>> Subject: Re: [Mono-list] Webservise Discovery Language
>>
>>
>>> Kornél,
>>>
>>> I am very exited about your suggestion, I think this is exactly what I'm
>>> looking for.
>>>
>>> But this level of experience is way about my knowledge. If you could
>>> share this, I would be interested.
>>>
>>> Many thanks,
>>>
>>> Ben
>>>
>>>
>>> Kornél Pál wrote:
>>>> ASP.NET applications should reload automatically on Web.config change
>>>> so there should be no need for restarting mod-mono-server (if you mean
>>>> that on mono). If you have a problem like that please file a bug
>>>> report.
>>>>
>>>> If you mean the Web.config modification described on
>>>> http://msdn2.microsoft.com/en-us/library/tewz1055.aspx in "To enable
>>>> dynamic discovery for a Web service" I suggest you to create your own
>>>> IHttpHandler implementation that wraps
>>>> System.Web.Services.Discovery.DiscoveryRequestHandler and that will
>>>> make you able to disable it based on static fields or your own
>>>> configuration files. If you use this method I can send you a simple
>>>> implementation of this.
>>>>
>>>> You are using some other Web.config settings please let me know what
>>>> exactly do you use.
>>>>
>>>> Kornél
>>>>
>>>> ----- Original Message ----- From: "Ben Clewett" <ben at clewett.org.uk>
>>>> To: "Kornél Pál" <kornelpal at gmail.com>
>>>> Cc: <mono-list at lists.ximian.com>
>>>> Sent: Tuesday, November 07, 2006 6:41 PM
>>>> Subject: Re: [Mono-list] Webservise Discovery Language
>>>>
>>>>
>>>>> Kornél Pál wrote:
>>>>>> Web.config is intended to do configuration. What exactly is your
>>>>>> problem with that?
>>>>>
>>>>> Hi Kornél,
>>>>>
>>>>> Thanks for the reply.
>>>>>
>>>>> I have six servers to manage. We sometimes release ten version of
>>>>> code a day, which over-write the Web.config. Editing this file is
>>>>> potentially dangerous. After an edit, I have to re-start the mono.
>>>>>
>>>>> My feeling is that this file must be interoperated by some part of the
>>>>> Mono suit (stop me if this is wrong.) It would be much better for me
>>>>> if control could be administered by some simple flag. Or even a
>>>>> static public variable in mono.
>>>>>
>>>>> If this is not possible, it's not so important. I am just interested
>>>>> to know if there is an alternate method.
>>>>>
>>>>> I can't be the only member who would like better control of this.
>>>>> Alternatively, do any members have scripts to toggle the Webservice
>>>>> Discovery which are safe and fast?
>>>>>
>>>>> Thanks again,
>>>>>
>>>>> Ben
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>
>>>>>> Kornél
>>>>>>
>>>>>> ----- Original Message ----- From: "Ben Clewett"
>>>>>> <ben at roadrunner.uk.com>
>>>>>> To: <mono-list at lists.ximian.com>
>>>>>> Sent: Tuesday, November 07, 2006 5:38 PM
>>>>>> Subject: [Mono-list] Webservise Discovery Language
>>>>>>
>>>>>>
>>>>>>> Sorry if this has been asked many times before....
>>>>>>>
>>>>>>> We develop ASP-Webservice code, which runs better than perfect on
>>>>>>> Mono.
>>>>>>>
>>>>>>> On our development system, we want the Webservice Discovery turned
>>>>>>> on.
>>>>>>>
>>>>>>> On our live systems, we want it optionally turned on.
>>>>>>>
>>>>>>> The only way I know of doing this is to edit the Web.config file.
>>>>>>>
>>>>>>> But this is messy, if done badly can crash the webservice, it has to
>>>>>>> be
>>>>>>> done on every release and every time we want to toggle this option.
>>>>>>>
>>>>>>> Do any of your members know a simple and elegant method for toggling
>>>>>>> the
>>>>>>> Webservice Discovery visibility?
>>>>>>>
>>>>>>> Thanks for your help,
>>>>>>>
>>>>>>> Ben.
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Mono-list maillist - Mono-list at lists.ximian.com
>>>>>>> http://lists.ximian.com/mailman/listinfo/mono-list
>>>>>>
>>>>>
>>>>
>>>
>> using System.Web;
>> using System.Web.Services.Discovery;
>>
>> namespace MyNamespace
>> {
>> public class OptionalDiscoveryRequestHandler : IHttpHandler
>> {
>> internal static bool EnableDiscovery;
>>
>> public OptionalDiscoveryRequestHandler()
>> {
>> }
>>
>> public void ProcessRequest(HttpContext context)
>> {
>> if (!EnableDiscovery)
>> throw new HttpException(403, "Forbidden");
>>
>> new DiscoveryRequestHandler().ProcessRequest(context);
>> }
>>
>> public bool IsReusable
>> {
>> get
>> {
>> return true;
>> }
>> }
>> }
>> }
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> Mono-list maillist - Mono-list at lists.ximian.com
>> http://lists.ximian.com/mailman/listinfo/mono-list
>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: OptionalDocumentationRequestHandler.cs
Url: http://lists.ximian.com/pipermail/mono-list/attachments/20061108/94e1f6a4/attachment-0001.pl
More information about the Mono-list
mailing list